2016-08-18 7 views
-1

В следующем коде:пользовательского ввода в терминале усекается

#include <iostream> 
#include <string> 
using namespace std; 

int main() { 
    string my_str; 
    cout << "Enter a large string:" << endl; 
    getline (cin, my_str); 
    cout << my_str << endl; 
    return 0; 
} 

Когда большая строка (без каких-либо пробелов) вводится, только первые 4095 символы печатаются. Зачем? (Ubuntu 14.4, g ++ 4.9.3)

Спасибо.

+0

Ваша программа игнорирует командную строку ... Вы спрашиваете о командной строке или читаете строку в качестве входных данных? Можете ли вы привести конкретный пример (желательно со ссылкой на него, демонстрирующее это поведение в Интернете)? – chris

+0

Да, я имел в виду чтение строки в качестве ввода. – havij

+2

Это может быть проблема с вашим эмулятором терминала, ограничивающим размер входных строк. Что произойдет, если вы перенаправите ввод в файл? – Barmar

ответ

1

Под Linux максимальное количество символов, которые можно читать за один раз на терминале, определяется N_TTY_BUF_SIZE в источнике ядра. Значение 4096.