我正在尝试使用标准输入(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);
}
}
}
答案 0 :(得分:1)
提取cin >> my_num;
不会提取换行符(这是空格,因此下一个getline
调用会提取空行。
解决此问题的其他方法:
始终使用基于行的字符串提取和从属字符串流。
使用std::cin >> my_num >> std::ws
来计算空格。
使用std::cin.ignore(1, '\n')
来获取一个换行符。
使用虚拟std::getline(std::cin, current_word)
调用来获取一个换行符。