使用rbuf复制文件,从文件中读取不一致
Copying file with rdbuf and inconsitent reading from the file?
假设我有一个文件input。txt,里面有几个数字
1 24 51
77
现在,我正试图执行这个命令:
`string filename="input.txt";
ifstream ifs;
ifs.open(filename);
ifs>>x>>y;
fstream tmp("temp.txt",ios::out);
tmp<< ifs.rdbuf(); `
现在文件temp.txt看起来像
(空白)4 51
77
那么,这个空格是因为我没有读到行尾吗?"ifs"ponter只是移动了两个整数,剩下的行尾被留下。为什么在第一个文件中,我可以循环使用
ifs>>x>>y;
和第二个(tmp) not?另一方面,如果我用空白的空间手动创建temp.txt,上面的命令立即工作。为什么这是矛盾的?
谢谢。
因为ifs >> x >> y;
不读取第一行数字后面的换行符。你可以通过添加ifs.get()
或一些这样的特殊情况来修复它,但在一般情况下[例如,如果文件是1 2 <newline>
,仍然会有一堆空格和一个换行符在文件中-只比没有get
调用少一个,所以你必须读取输入文件并确定文件中有什么。
正如Joachim所建议的,您可以使用ignore
跳到下一个换行符,但是,如果您有多个换行符,它将不会真正有帮助。
当读取字符串和数字(整数和浮点数)时,输入操作符会跳过前导空格。
如果您想在读取前两个数字后删除尾随空格,只需执行ignore
,直到行尾。
相关文章:
- 正在将csv文件读取为双精度矢量
- 将从格式化文本文件读取的文本数据存储到链表
- C++ 读取文件读取文件不正确
- 使用对象文件读取三角形数据网格
- 如何减慢从 BVH 文件读取的 opengl 动画?
- 从文件读取,并写入函数C++中的数组
- 从对象C++中的文件读取内容时出现分段错误
- 从文件读取并通过矢量输出到控制台
- 尝试将字符串从文件读取到无符号字符向量中
- 如何将文本文件读取到二维数组中并以 c++ 打印
- 简化文件读取的函数
- 如何将逗号分隔的文件读取为 2D int 数组?
- 在 c++ 中将数据从文件读取到队列中
- 'std::wstring_convert'尽可能多地转换(从 UTF8 文件读取块)
- C++,从文件读取到结构,然后读取到向量(结构被推入向量太多次,而不仅仅是一次)
- 文件读取C++包括空格键
- 从文件读取时未将值推回矢量
- 从文件 C++ 读取时的无限循环
- 从同一文件读取和写入?
- 从.txt文件读取到C++中的双精度向量