如何将指定行数作为输入?

时间:2016-05-04 17:25:52

标签: c++ string

cin>>string接受输入,直到空格或新行。但是getline(cin,string)需要输入直到换行。同样,getline(cin,string,'c')接受输入直到'c'。有没有办法忽略一些'\n'字符并将指定数量的行作为输入?

我尝试了下面的代码但是没有用

int main()
{
   string a;
   for(int i=0;i<4;i++)
   {
       getline(cin,a);//take string input 
   }
   cout<<a;
}

此处输入以下内容

 ksafj kfaskjf(\n)1st
 uuiiuo akjfksad(\n)2nd
 ksafj kasfj(\n)3rd
 asdfed kkkl(\n) when the 4th enter comes input terminate

字符串a仅保留"asdfed kkkl"。我希望它能容纳所有字符,包括行尾(\n)。

1 个答案:

答案 0 :(得分:10)

你想获得前n行吗?

std::string get_n_lines(std::istream& input, const std::size_t n)
{
  std::ostringstream result;
  std::string line;
  std::size_t i = 0;

  while (std::getline(input, line) && i < n)
  {
    result << line << '\n';
    ++i
  }

  return result.str();
}

std::string first_4_lines = get_n_lines(std::cin, 4);