【发布时间】:2023-03-18 07:20:01
【问题描述】:
我想逐行读取一个文件并将读取的每一行输出到一个新文件。在此代码中, cin 已被重定向以引用输入文件,而 cout 已被重定向以引用输出文件。
循环成功地写入了文件中的每一行,但随后卡在了最后的 getline 调用上。结果,“完成”不会写入文件,程序也不会终止。
#include <string>
#include <iostream>
using namespace std;
int main() {
string line;
while(getline(cin, line)) {
cout << line << endl;
}
cout << "Done";
return 0;
}
奇怪的是,如果我强行终止程序,它似乎会突然按要求执行,并写上“完成”。
有人能指出我正确的方向吗?是代码有缺陷,还是外部配置问题?
注意:有问题的输入文件以换行符结尾。另外,我不想使用除这两个之外的任何包含。
【问题讨论】:
-
你是如何调用程序的?
-
我实际上无法重现错误
-
我正在通过 Eclipse IDE 调用它。
-
我可能错误地描述了这个问题。循环最终完成,但只有当我强行终止程序时(它不会自行完成)。这有什么意义吗?
-
在最后一个输出中添加一个刷新:
std::cout << "Done\n" << std::flush;我猜,IDE 使窗口保持活动状态。