无法读取字符串的长 cin 输入
Can't read in a long cin input to a string
我的代码看起来像
string inputString;
std::getline (std::cin, inputString)
cout << inputString;
当我一个长字符串〜30k字符时,输入串只有该字符串的一部分。有什么想法如何解决?
std::getline()
cppreference上的文档:
getline
从输入流读取字符并将其放入字符串中:1。表现为
UnformattedInputFunction
,除了input.gcount()
不受影响。构造和检查哨兵对象后,执行以下操作:
调用
str.erase()
从
input
提取字符,并将其附加到str
,直到发生以下一个(在列出的顺序中检查)a。
input
上的文件结束条件,在这种情况下,getline
设置eofbit
。b。下一个可用的输入字符是
delim
,如Traits::eq(c, delim)
测试,在这种情况下,从input
提取了定界符字符,但未附加到str
。c。
str.max_size()
字符已存储,在这种情况下getline
设置failbit
并返回。如果出于任何原因没有提取字符(甚至是丢弃的定界符),则
getline
设置failbit
并返回。2。与
getline(input, str, input.widen('n'))
相同,即默认分界符是endline字符。
因此,请检查您的输入是否受inputString.max_size()
的值限制。它可能在您的系统上接近32K。
默认情况下,终端在规范模式下工作,并且具有长度4096字节的缓冲区。这就是为什么字符串可以接受的最大输入为4095的原因。现在,解决方案是更改为Linux中的非规范模式。您可以通过
做到这一点$ stty -icanon # for switching to the noncanonical mode.
$ stty icanon # reverting back to the canonical mode when you are done.
相关文章:
- 我无法在Visual Studio代码中使用CIN输入答案,它说输入您的年龄,但它说只读文本编辑器如何解决这个问题?
- 分割错误 11:尝试使用 cin 输入 B[1] 时
- 当使用 std::CIN 输入结构时,它会出错
- C ++如何使用CIN输入这样的值?
- 使用 cin 输入数组值
- 当我输入一个字母时,cin 输入(输入是一个 int),而不是打印错误一次,它打印正确一次,然后在循环的其余部分打印 i
- 成功使用连续同时(cin >>输入)
- 连续 cin 输入在C++中的工作原理
- 无法获取哨兵值以读取多个 CIN 输入?
- 我如何使用CIN输入整数,每个数字都被逗号分隔
- C CIN输入要文件
- C++:获取用户通过cin输入的数据类型
- 无法读取字符串的长 cin 输入
- 如何将可编辑的预定义字符串写入 C++ 控制台应用程序中的 cin 输入运算符
- 循环获得CIN输入
- cin 输入可以有多大
- 如何拆分 CIN 输入
- 检查有效的 CIN 输入时出现问题
- 较长的获取线 CIN 输入的问题
- 检查 cin 输入流会生成一个整数