【发布时间】:2015-04-17 16:50:15
【问题描述】:
所以我试图从一个文本文件中读取并打印每一行,由两个字符串包围。例如,这是我的程序:
string command;
int main()
{
while (!cin.eof()) {
while (getline(cin, command)) {
cout << "Can't add element : " << command << " : invalid parameter." << endl;
}
}
}
输入文件是每行3个数字的形式,像这样:
1 1 1
2 2 2
5 4 9
所以,输出应该是:
Can't add element : 1 1 1 : invalid parameter.
Can't add element : 2 2 2 : invalid parameter.
Can't add element : 5 4 9 : invalid parameter.
相反,它打印为:
: invalid parameter.1 1 1
: invalid parameter.1 2 2
: invalid parameter.5 4 9
对于我的一生,我无法弄清楚为什么会发生这种情况。有什么帮助吗?
【问题讨论】:
-
看起来您正在以 LF 行结尾的系统上读取以 CRLF 行结尾的文件。
-
不要使用
while(!cin.eof())。这是总是错的。幸运的是你的代码也有正确的循环,所以可以简单地删除不正确的while。