[英]Reading 500 inputs on one line via std::cin produces garbage
我有一个非常简单的程序:
int n;
int arr[1000];
cin >> n;
for (int i = 0; i < n; i++) {
cin >> arr[i];
}
这对于小输入可以正常工作,但是当n> ~500时,输入会在我输入时变成颠倒的问号。 看起来输入被空格分隔的事实有所不同,因为如果我输入250个数字,点击返回,然后输入接下来的250个数字,它按预期工作。
任何人都知道为什么会这样吗?
编辑:感谢您检查我的终端是否被堵塞的建议; 事实证明它是。 只运行./a.out < input.txt
而不是尝试通过Xcode运行程序,使用完全相同的输入一切正常。
“...如果我输入250个数字,点击返回,然后输入接下来的250个数字,它按预期工作。......”
这样做听起来非常容易出错,因为输入中的简单拼写错误等等。 手动输入大量数字很可能会因为误入歧视的角色而失败。
您应该检查输入的实际结果
while(!(cin >> arr[i])) {
cin.clear();
std::string dummy;
cin >> dummy;
cerr << "Invalid input: '" << dummy << "'." << endl;
}
或者只是在遇到错误时停止处理:
if(!(cin >> arr[i])) {
cin.clear();
std::string dummy;
cin >> dummy;
cerr << "Invalid input: '" << dummy << "'." << endl;
break;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.