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