我无法阅读和区分输入中的空行。
以下是示例输入:
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>>空白,但它没有用。
有人可以帮我解决这个问题吗?
谢谢!
答案 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
}
}