C – 文件读取中缺少行尾字符

我使用C流来读取目录中的一堆文件,然后将它们写入另一个目录.由于这些文件可能是不同的类型,我在读/写这些文件时使用通用的ios :: binary标志.

示例代码如下:

std::fstream inf( "ex.txt", std::ios::in | std::ios::binary);
char c;
while( inf >> c ) {
    // writing to another file in binary format
}

我遇到的问题是,对于包含文本的文件,这些文本文件中的行尾字符不会写入输出文件.

编辑:或者至少它们看起来不像打开新写入的文件时,只有一个连续的字符行.

再次编辑:即使在文本模式下进行读/写操作,问题(连续字符串)似乎仍然存在.

因此,我想知道是否有办法检查文件是否有文本或二进制文件,然后适当地读/写它.否则,即使以二进制格式打开文件,有没有办法保留行尾字符?

编辑:我正在使用g 4.8.2编译器

最佳答案 当你想操纵字节时,你需要使用读写方法,而不是>> <<操作符.

但是,您可以使用inp.flags(inp.flags()& ~std :: ios_base :: skipws);来获得预期的行为.

点赞