对于std::cin缓冲区是否有大小限制?

Is there a size limit for std::cin buffer?

本文关键字:是否 std cin 缓冲区 对于      更新时间:2023-10-16

我想从用户那里得到300个数字,并打印出最大的数字。首先,我使用以下代码请求输入:

cout << "Enter the arrayn";

然后我粘贴300号到终端并回车。然后使用以下代码捕获输入:

int count = 300;
int inputArray[count];
for (int i = 0; i<count; ++i) {
    cin >> inputArray[i];
}

代码不工作,它只是要求越来越多的数字。

但是,当我一次粘贴150个数字时(例如,将1粘贴到150,按回车键,然后将151粘贴到300,再按回车键),代码工作得很好。所以,我猜缓冲区可以处理多少输入是有限制的。我说的对吗?std::cin是如何工作的?

侧面问题:我应该从文件中获取数据而不是使用cin吗?

我的完整代码:

#include <string>
#include <iostream>
using namespace std;
int main()
{
    int count = 300;
    cout << "Enter the numbersn";
    int inputArray[count];
    for (int i = 0; i<count; ++i) {
        cin >> inputArray[i];
    }
    cout << "Got inputn";
    int bigNum = inputArray[0];
    for (int i=1; i<count; ++i) {
        int in = inputArray[i];
        if (in > bigNum) {
            bigNum = in;
        }
    }
    cout << "The largest number is " << bigNum << endl;
    return 0;
}

我可以在标准中找到IO缓冲区没有指定的大小限制,但您的操作系统输入缓冲区可能有。

相关文章: