我无法弄清楚为什么以下程序中的循环没有正好运行testCount次。请帮助纠正它。
#include <iostream>
#include <string>
#include <sstream>
using namespace std;
int main() {
size_t testCount;
cin >> testCount;
if(testCount < 0 || testCount > 100) return 0;
int input;
while(testCount--) {
string instr;
getline(cin,instr);
istringstream iss(instr);
while(iss >> input) {
cout << input << endl;
}
}
return 0;
}
答案 0 :(得分:0)
感谢。我知道了。问题出在getline()
上。第一个循环周期被浪费,因为当我在输入getline()
值后按enter key
时,testCount
占据了包含新行字符的第一行。
std::ws
是一个输入流操纵器,它忽略了遇到第一个非空白字符的所有空格。
此外,如果getline
不适合行,cin >> ws
会留下空白。 #include <iostream>
#include <string>
#include <sstream>
using namespace std;
int main() {
size_t testCount;
cin >> testCount >> ws;
if(testCount < 0 || testCount > 100) return 0;
int input;
while(testCount--) {
cout << "testCount " << testCount << endl;
string instr;
cin >> ws;
getline(cin,instr);
istringstream iss(instr);
while(iss >> input) {
cout << input << endl;
}
}
return 0;
}
会丢弃这些内容。
这是防弹代码:
line_split = line.split(' ')