gpt4 book ai didi

c++ - 使用 rdbuf 复制文件并从文件中读取不一致?

转载 作者:搜寻专家 更新时间:2023-10-31 00:59:57 25 4
gpt4 key购买 nike

比方说,我有几个数字的文件 input.txt

1 2
4 51
3 77

现在,我正在尝试执行这个命令:

`string filename="input.txt";     
ifstream ifs;
ifs.open(filename);
ifs>>x>>y;
fstream tmp("temp.txt",ios::out);
tmp<< ifs.rdbuf(); `

现在文件 temp.txt 看起来像

(empty space)
4 51
3 77

所以,这个空白是因为我没有读到行尾吗? "ifs"ponter 只是移动了两个整数,剩下的行尾被留下了。为什么在第一个文件中,我可以用

循环

ifs>>x>>y;

第二个 (tmp) 不是吗?另一方面,如果我用空白空间手动创建 temp.txt,上面的命令会立即生效。为什么这是不一致的?

谢谢。

最佳答案

因为 ifs >> x >> y;不读取第一行数字后的换行符。在这种特殊情况下,您可以通过添加 ifs.get() 来修复它或类似的,但在一般情况下[例如如果文件是 1 2 <newline> , 文件中仍然会有一堆空格和一个换行符 - 只比没有 get 少一个调用,因此您必须读取输入文件并确定文件中的内容。

正如 Joachim 所建议的,您可以使用 ignore跳到下一个换行符,但同样,如果您有多个换行符,它也无济于事。

关于c++ - 使用 rdbuf 复制文件并从文件中读取不一致?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32314548/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com