小编Sou*_*ity的帖子

如何从fstream精确地读取128个字节到字符串对象?

如何从fstream到字符串对象中准确读取128个字节?

我写了一些代码来读取文件的前128个字节并打印它然后打印文件的最后128个字节并打印出来.最后一部分可以工作,因为您可以轻松地迭代到EOF,但是如何从前面获得正好128个字节?下面的代码不起作用,因为你不能添加128到ifstream的迭代器,它不是可转位,仅可递增的(似乎).

当然我可以制作一个迭代器和*++它128次,但必须有一条直线的方法来做,对吧?

#include <iostream>
#include <fstream>
#include <string>

int main(int argc, char **argv)
{
    std::ifstream ifs ("input.txt",std::ifstream::in | std::ifstream::binary);

    if (ifs.good())
    {
    // read first 128 bytes into a string
        ifs.seekg(0,std::ifstream::beg);
        std::string first128((std::istreambuf_iterator<char>(ifs)),
                             (std::istreambuf_iterator<char>(ifs))+128);

        std::cout << first128 << std::endl;

    // read last 128 bytes into a string
        ifs.seekg(-128,std::ifstream::end);
        std::string last128((std::istreambuf_iterator<char>(ifs)),
                            std::istreambuf_iterator<char>());

        std::cout << last128 << std::endl;

        return 0;
    }

    return 1;
}
Run Code Online (Sandbox Code Playgroud)

c++ string fstream iostream ifstream

8
推荐指数
1
解决办法
1万
查看次数

char*a,*b; 什么类型(ba)以及如何打印它?

{
  char *a, *b;

  printf("%lx\n",(b-a));
}
Run Code Online (Sandbox Code Playgroud)

通常可行,实际上,我无法想象它会在32位或64位机器上发出警告或失败.但对于ANSI C和尺寸感知,这是正确的做法吗?我希望这些代码可以在每个平台上运行,包括非Unix和嵌入式系统.

c pointers stdio

5
推荐指数
3
解决办法
1581
查看次数

标签 统计

c ×1

c++ ×1

fstream ×1

ifstream ×1

iostream ×1

pointers ×1

stdio ×1

string ×1