2016-08-18 110 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.