如何使用cin继续阅读,直到达到空白行

时间:2017-01-08 04:10:39

标签: c++ stl iostream cin

我正在尝试使用标准输入(cin)读入输入,直到空白行被击中。我尝试了很多次,但仍未能实现。任何人都可以帮助我吗?

  

以下是输入格式。注意:
1。 //是评论
2。注释可以在输入中的第二行之后随机分布。所以我还需要清除那些评论。不知道怎么做。
3。第一行必须是一个字母。第4行。第二行必须是整数。

A
8一个好的很多很棒的很棒很棒很棒很棒//这些都是随意的评论
辉煌
天才
计算器

  

以下是我现在所拥有的。我正在尝试使用getline,但程序只读入前两行(字母和数字)。然后程序结束。不确定出了什么问题:

void read() {    
  vector<string> my_vec;
  char my_letter;
  cin >> my_letter;

  int my_num
  cin >> my_num;

  string current_word;
  while (getline(cin, current_word)) {
    if (current_word.empty()) {
      break;
    }
    if (current_word[0] != '/' ) {
      my_vec.push_back(current_word);
    }
  }
}

1 个答案:

答案 0 :(得分:1)

提取cin >> my_num;不会提取换行符(这是空格,因此下一个getline调用会提取空行。

解决此问题的其他方法:

  1. 始终使用基于行的字符串提取和从属字符串流。

  2. 使用std::cin >> my_num >> std::ws来计算空格。

  3. 使用std::cin.ignore(1, '\n')来获取一个换行符。

  4. 使用虚拟std::getline(std::cin, current_word)调用来获取一个换行符。