对于std::cin缓冲区是否有大小限制?
Is there a size limit for std::cin buffer?
我想从用户那里得到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缓冲区没有指定的大小限制,但您的操作系统输入缓冲区可能有。
相关文章:
- 检查 std::shared_ptr<> 的当前底层类型是否为 T
- 关于std::move的使用,是否有编译警告
- 通过网络、跨平台传递std::变体是否安全
- 是否有类似std::lower_bound的函数,而不需要排序/分区输入
- std::vector::迭代器是否可以合法地作为指针
- MESI协议和std::atomic-它是否确保所有写入立即对其他线程可见?
- 是否将std::packaged_task添加到现有线程
- C++中是否存在 std::conditional 的懒惰等价物?
- 检查某些类型是否是模板类 std::optional 的实例化
- 如何检查两个 std::向量在小于 O(n) 的时间复杂度内是否相等
- 在C++中,使用带有 std::optional 参数的函数<T>来表示可选参数是否有意义?
- C++标准是否允许<double>在没有开销的情况下实现 std::可选
- '[](std::list& list)<int>{return std::move(list)}(list)' 是否保证将 'list' 留空?
- "std::list::splice(std::const_iterator pos, std::list&& other)"是否保证将"其他"留空?
- 为什么程序员同时使用 std::bad_alloc 和 std::exception.是否 std::例外 仅是不够的
- glibcxx STL 在实现 std::valarray::sum() 时是否不正确?
- 在 C++20 中是否不再允许在 std 中对程序定义类型的函数模板进行专用化?
- 将 std::map::emplace 与返回 shared_ptr 的函数一起使用是否正确?
- std::p romise::set_value() 和 std::future::wait() 是否提供内存围栏?
- std::less是否应该允许在编译时比较不相关的指针?