繁体   English   中英

通过std :: cin在一行上读取500个输入会产生垃圾

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM