2016-11-06 3 views
1

Я новичок в C++, поэтому у меня были некоторые проблемы с практикой. Я хочу получить 300 номеров от пользователя и распечатать наибольшее число. Во-первых, я использую этот код, чтобы задать для ввода:C++ Существует ли ограничение размера для cin-буфера?

cout << "Enter the array\n"; 

Затем я вставляю 300 номер в терминал и нажмите клавишу ВВОД. Затем используйте этот код, чтобы захватить вход:

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

И код не работает, он просто просит больше и больше чисел.

Но когда я вставляю 150 номеров за раз (например, вставьте от 1 до 150, нажмите enter, затем вставьте от 151 до 300, снова нажмите Enter) код работает просто отлично. Итак, я предполагаю, что для буфера есть ограничение на количество входящих в него данных. Я прав? Как работает std :: cin?

Вопрос: должен ли я получить данные из файла вместо использования cin?

Моего полный код:

#include <string> 
#include <iostream> 
using namespace std; 
int main() 
{ 
    int count = 300; 
    cout << "Enter the numbers\n"; 
    int inputArray[count]; 
    for (int i = 0; i<count; ++i) { 
     cin >> inputArray[i]; 
    } 
    cout << "Got input\n"; 
    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; 
} 
+2

Стандарт C++ не требует максимума во входном буфере. Ваша операционная система может наложить свои собственные ограничения. –

+0

Я использую Xcode, должен ли я искать некоторые настройки в Xcode? –

+0

Я бы использовал командную строку и передал/перенаправлял файл с вашим входом через вашу программу. – Galik

ответ

0

Там нет указанного предельного размера буферов ввода-вывода, которые я смог найти в стандарте, но может быть для ввода OS буфера.

Смежные вопросы