扫码关注官方订阅号
ringa_lee
while (!input.eof()) { input >> str; std::cout << str; }
不会重复读取最后一行,但是会重复输出最后一次读到的内容。这是因为input完成最后一次读取后不会立即设置eof状态,所以程序会再进行一轮循环,在这轮循环input才会设置eof状态。结果就是最后一次读取的内容被输出了两次。
改为
while (input >> str) { std::cout << str; }
或
for(;;) { if (!(input >> str)) break; std::cout << str; }
也可以考虑用getline(input, str, '\n')来按行读取。
getline(input, str, '\n')
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
不会重复读取最后一行,但是会重复输出最后一次读到的内容。这是因为input完成最后一次读取后不会立即设置eof状态,所以程序会再进行一轮循环,在这轮循环input才会设置eof状态。结果就是最后一次读取的内容被输出了两次。
改为
或
也可以考虑用
getline(input, str, '\n')
来按行读取。