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

托马斯·诺贝尔

使用读取程序中的输入时遇到问题cin输入看起来像这样:

5 2
10 17 17 17 37

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

问题是,当项目数变大然后大约500时,项目数也变大(而不是17,例如50356),cin在读取大输入时停在某个地方(它只是冻结了整个程序)。奇怪的是,它可以在较小的输入上完美运行(我的程序完全符合我的期望),但不适用于较大的输入。我还想在输入大小> 5000的情况下运行它。我不知道为什么它不起作用。可能存在缓冲区问题,我需要刷新。该解决方案可能非常简单。

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;
}

编辑:问题已解决问题不在于cin功能,而在于我给程序输入的方式。将巨大的输入量粘贴到剪贴板上,然后在运行程序时将其作为参数放入终端,这是问题所在。当运行程序时,./program < input.in其中input.in是一个文件,该文件以上述格式保存所有输入,则程序可以正常运行并且不再冻结。

托马斯·诺贝尔

问题已经解决了。问题不在于cin功能,而在于我给程序输入的方式。将巨大的输入量粘贴到剪贴板上,然后在运行程序时将其作为参数放入终端,这是问题所在。当以./program < input.in“ input.in”文件的形式运行程序时,该文件以上述格式保存所有输入,则程序可以正常运行并且不再冻结。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

我尝试读取输入时尝试使用“连接”导致R冻结或崩溃

没有输入时,扫描仪会冻结程序

处理输入时意外冻结

读取输入时猛击

有先前输入时如何使用getline?由于先前的输入,getline(cin, stringName) 不起作用

使用getchar()读取输入时出现分段错误

C++:使用 fgets() 读取字符输入时出错

提供大量输入时中止调用堆栈操作程序中的错误

读取输入时忽略引用

当我们将 cin 声明为 int 并在 cout 中使用 print cin 从 cin 获取输入时会发生什么?

其他标准输入时,Go程序可以从键盘读取吗?

当awk之类的程序通过管道获取输入时,是否按ine逐行读取?

读取此文件输入时,为什么我的程序会因null异常而抛出?

读取输入时的Qt控制台应用程序问题

在读取输入时进行计算的Window Form应用程序

读取线程输入时缺少字符

从管道读取输入时执行问题

从用户读取输入时,fgets分段错误

从cin读取不同类型的输入

如何使用重定向的标准输入(即cin)读取文件(注意:不使用ifstream)

大量输入时,Swift中的递归函数崩溃

当我有大量输入时,我的代码以OverflowError结尾

当我尝试使用'split'和trim()读取输入时,抛出-NumberFormatException

C:使用fget读取用户输入时出现细分错误

使用 React 在输入时提交

用户输入时编辑外壳程序前缀

批处理-当要求输入时,程序退出

从终端输入时不输入ENTER读取SPACE

我的单元检查变量未正确读取输入,当我输入cm作为输入时,程序将布尔值发送给else