使用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是以上述格式保存所有输入的文件,然后程序运行正常,不再冻结。
答案 0 :(得分:1)
问题解决了。问题不在于cin
函数,而在于我给程序输入的方式。将大量输入粘贴到剪贴板上,然后在运行程序接缝时将其作为参数放在终端中作为问题。将程序作为./program < input.in
运行时,输入&#39; input.in&#39;是保存所有输入的文件,如上所述,然后程序运行正常,不再冻结。