使用cin读取大量输入时,程序会冻结

时间:2018-01-06 18:02:14

标签: c++ input cin

使用cin在我的程序中读取输入时遇到问题。输入如下所示:

5 2
10 17 17 17 37

其中5是项目数,2是分隔符数(与此问题无关)。两行都以行尾字符结尾。

问题是,当项目数量变大然后大约500并且数字也变大(而不是像50356这样的17)时,cin在某处读取时void fill() { cin >> numberOfItems; cin >> dividers; vector<unsigned long int> roundedSum; roundedSum.resize(numberOfItems); unRoundedSum.resize(numberOfItems); currentSum.resize(numberOfItems); updatedSum.resize(numberOfItems); unsigned long int tempValue; cin >> tempValue; roundedSum[0] = roundValue(tempValue); unRoundedSum[0] = tempValue; for (unsigned long int i = 1; i < numberOfItems; ++i){ cin >> tempValue; tempValue += unRoundedSum[i - 1]; unRoundedSum[i] = tempValue; roundedSum[i] = roundValue(unRoundedSum[i]); } currentSum = roundedSum; updatedSum = roundedSum; } 停止(它只是冻结整个程序)大输入。奇怪的是它在小输入上完美运行(我的程序完全符合我的预期),但没有更大的输入。我还想用输入大小&gt;运行它。 5000.我不知道为什么它不起作用。也许有缓冲问题,我需要刷新。解决方案可能非常简单。

cin

编辑:问题已解决 问题不在于./program < input.in函数,而在于我给程序输入的方式。将大量输入粘贴到剪贴板上,然后在运行程序接缝时将其作为参数放在终端中作为问题。当以this.props.navigation.navigate ({routeName: 'RootScreenFour'})运行程序时,input.in是以上述格式保存所有输入的文件,然后程序运行正常,不再冻结。

1 个答案:

答案 0 :(得分:1)

问题解决了。问题不在于cin函数,而在于我给程序输入的方式。将大量输入粘贴到剪贴板上,然后在运行程序接缝时将其作为参数放在终端中作为问题。将程序作为./program < input.in运行时,输入&#39; input.in&#39;是保存所有输入的文件,如上所述,然后程序运行正常,不再冻结。