我的代码看起来像这样能在不长的CIN输入读取到一个字符串
string inputString;
std::getline (std::cin, inputString)
cout << inputString;
当我CIN一长串〜30K字,则仅inputString有一个字符串的一部分。任何想法如何解决这一问题?
我的代码看起来像这样能在不长的CIN输入读取到一个字符串
string inputString;
std::getline (std::cin, inputString)
cout << inputString;
当我CIN一长串〜30K字,则仅inputString有一个字符串的一部分。任何想法如何解决这一问题?
从std::getline()
文档上cppreference.com:
getline
从输入流中读取的字符,并将其置于一字符串:1.表现为
UnformattedInputFunction
,不同之处在于input.gcount()
不受影响。从input
呼叫
str.erase()
提取字符,并将其追加到
:构造和检查岗哨对象之后,执行以下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'))
相同,也就是说,默认分隔符是结尾字符。
因此,请检查您的输入是否受限于inputString.max_size()
的值。它可能在您的系统上接近32k。
或者16k如果Turbo C++解决:D –
嗯,不,max_size()是一个巨大的大小4294967295 – alhas23
您确定它不包含完整的输入吗?如果你输出'inputString.size()'你会得到什么? – NathanOliver
大小可能受限于您的终端允许的最大线路长度? – Kupto
您可以添加导致此问题的示例输入以及它生成的输出吗?这可能有助于确定问题。 –