读空行C ++

时间:2014-09-01 01:11:21

标签: c++ input

我无法阅读和区分输入中的空行。

以下是示例输入:

 number

 string
 string
 string
 ...

 number

 string
 string
 ...

每个数字代表输入的开始,字符串序列后的空白行代表输入的结束。字符串可以是短语,而不仅仅是一个单词。

我的代码执行以下操作:

  int n;

  while(cin >> n) { //number

    string s, blank;
    getline(cin, blank); //reads the blank line

    while (getline(cin, s) && s.length() > 0) { //I've tried !s.empty()
        //do stuff
    }
  }

我直接尝试过cin>>空白,但它没有用。

有人可以帮我解决这个问题吗?

谢谢!

1 个答案:

答案 0 :(得分:6)

用这一行读取数字后:

while(cin >> n) { //number

cin在最后一位数字之后没有读取任何内容。这意味着cin的输入缓冲区仍然包含该数字所在的其余行。因此,您需要跳过该行,下一个空白行。你可以通过两次使用getline来做到这一点。即。

while(cin >> n) { //number

    string s, blank;
    getline(cin, blank); // reads the rest of the line that the number was on
    getline(cin, blank); // reads the blank line

    while (getline(cin, s) && !s.empty()) {
        //do stuff
    }
  }