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

标签 c++ io binary std fstream

我正在使用 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 编译器

最佳答案

当你想操作字节时,你需要使用readwrite方法,而不是 >> <<运营商。

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

关于C++ - 文件读取中缺少行尾字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33473104/

相关文章:

java - 扫描仪在使用 next() 或 nextFoo() 后跳过 nextLine()?

c - 二叉树节点以及与父节点的关系

c++ - 我如何从读取二进制文件的 mkv 中提取集群的 timstemp

c++ - 如果键相同,如何使用其值对 map 元素进行排序?

c++ - 进入函数,但不进入 VS2017 的参数评估

c++ - 获取 Qt 应用程序输出到 Qwidget C++

java - 使用try-with-resource在java中逐行读取文本文件

c - read(2) 如何与回车交互?

python - 使用 mmap 读取具有偏移量的二进制文件

c++ - 为什么 Sprite 是wiz0;不等同于向导 wiz0();在我的代码中? C2228 错误