无法读取字符串的长cin输入

时间:2017-02-24 16:54:29

标签: c++ string cin

我的代码看起来像这样

string inputString;
std::getline (std::cin, inputString)
cout << inputString;

当我cin一个长字符串~30k字符时,inputString只有该字符串的一部分。任何想法如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

来自cppreference.com上的std::getline()文档:

  

getline从输入流中读取字符并将它们放入字符串中:

     

1。行为为UnformattedInputFunction,但input.gcount()不受影响。构造并检查岗哨对象后,执行以下操作:

     
      
  1. 呼叫str.erase()

  2.   
  3. input中提取字符并将其附加到str,直到出现以下情况之一(按所列顺序检查)

         

    一个。 input上的文件结束条件,在这种情况下,getline设置eofbit

         

    湾由delim测试的下一个可用输入字符为Traits::eq(c, delim),在这种情况下,分隔符字符是从input中提取的,但不会附加到str

         

    ℃。已存储 str.max_size()个字符,在这种情况下getline设置failbit并返回

  4.   
  5. 如果由于某种原因没有提取任何字符(甚至没有丢弃的分隔符),getline设置failbit并返回。

  6.         

    2。与getline(input, str, input.widen('\n'))相同,即默认分隔符是结束字符。

因此,请检查您的输入是否受inputString.max_size()值的限制。它可能在你的系统上接近32k。