C++ - 文件读取中缺少行尾字符
C++ - Missing end of line characters in file read
我正在使用 C++ 流读取目录中的一堆文件,然后将它们写入另一个目录。由于这些文件可能属于不同类型,因此当 reading/writing 这些文件时,我使用了通用的 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
}
我遇到的问题是,如果文件包含文本,这些文本文件中的行尾字符不会写入输出文件。
编辑:或者至少它们看起来不像打开新写入的文件时那样,只有一行连续的字符。
再次编辑:即使在文本模式下进行读/写,(连续字符串的)问题似乎仍然存在。
因此,我想知道是否有一种方法可以检查文件是否包含文本或二进制文件,然后适当地 read/write 它。否则,即使以二进制格式打开文件,是否有任何方法可以保留行尾字符?
编辑:我正在使用 g++ 4.8.2 编译器
当你想操作字节时,你需要使用read
和write
方法,而不是>>
<<
运算符。
不过,您可以使用 inp.flags(inp.flags() & ~std::ios_base::skipws);
获得预期的行为。
我正在使用 C++ 流读取目录中的一堆文件,然后将它们写入另一个目录。由于这些文件可能属于不同类型,因此当 reading/writing 这些文件时,我使用了通用的 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
}
我遇到的问题是,如果文件包含文本,这些文本文件中的行尾字符不会写入输出文件。
编辑:或者至少它们看起来不像打开新写入的文件时那样,只有一行连续的字符。
再次编辑:即使在文本模式下进行读/写,(连续字符串的)问题似乎仍然存在。
因此,我想知道是否有一种方法可以检查文件是否包含文本或二进制文件,然后适当地 read/write 它。否则,即使以二进制格式打开文件,是否有任何方法可以保留行尾字符?
编辑:我正在使用 g++ 4.8.2 编译器
当你想操作字节时,你需要使用read
和write
方法,而不是>>
<<
运算符。
不过,您可以使用 inp.flags(inp.flags() & ~std::ios_base::skipws);
获得预期的行为。