我的代码看起来像这样
string inputString;
std::getline (std::cin, inputString)
cout << inputString;
当我cin一个长字符串~30k字符时,inputString只有该字符串的一部分。任何想法如何解决这个问题?
答案 0 :(得分:0)
来自cppreference.com上的std::getline()
文档:
getline
从输入流中读取字符并将它们放入字符串中:1。行为为
UnformattedInputFunction
,但input.gcount()
不受影响。构造并检查岗哨对象后,执行以下操作:
呼叫
str.erase()
从
input
中提取字符并将其附加到str
,直到出现以下情况之一(按所列顺序检查)一个。
input
上的文件结束条件,在这种情况下,getline
设置eofbit
。湾由
delim
测试的下一个可用输入字符为Traits::eq(c, delim)
,在这种情况下,分隔符字符是从input
中提取的,但不会附加到str
。℃。已存储
str.max_size()
个字符,在这种情况下getline
设置failbit
并返回。- 醇>
如果由于某种原因没有提取任何字符(甚至没有丢弃的分隔符),
getline
设置failbit
并返回。2。与
getline(input, str, input.widen('\n'))
相同,即默认分隔符是结束字符。
因此,请检查您的输入是否受inputString.max_size()
值的限制。它可能在你的系统上接近32k。