C++ C++;,在for循环中使用getline和cin.ignore()时出现问题。getline将跳过for循环中的第二次迭代
我一直在想为什么它不读取我的第二个getline()。第一个getline(cin,line)工作正常。没有错误或任何东西。它只是通过循环中的第二次迭代跳过该行。任何帮助都将不胜感激。多谢各位C++ C++;,在for循环中使用getline和cin.ignore()时出现问题。getline将跳过for循环中的第二次迭代,c++,C++,我一直在想为什么它不读取我的第二个getline()。第一个getline(cin,line)工作正常。没有错误或任何东西。它只是通过循环中的第二次迭代跳过该行。任何帮助都将不胜感激。多谢各位 int main() { int n = 0; std::cin >> n; std::vector <int> arrNumbers; int requestLine = 0; st
int main() {
int n = 0;
std::cin >> n;
std::vector <int> arrNumbers;
int requestLine = 0;
std::string line;
double procent = 0;
if (n > 99) {
std::cout << "wrong range of number" << std::endl;
exit(-1);
}
for (int i = 0; i < n; i++) {
int num;
std::cin >> num;
arrNumbers.push_back(num);
}
std::cin >> requestLine;
for (int i = 0; i < requestLine; i++) {
std::cin.ignore(256, '\n');
std::getline(std::cin, line);
int del1 = line.find_first_of(' ', 0); // first position of space
int del2 = line.find_first_of(' ', del1 + 1); // second position of space
std::stringstream indexStr(line.substr(0, del1)); // position
std::stringstream numberStr(line.substr(del1, del2)); // number
std::stringstream repeatsStr(line.substr(del2)); // repied
int index, number, repeats;
indexStr >> index;
numberStr >> number;
repeatsStr >> repeats;
arrNumbers.insert(arrNumbers.begin() + index - 1, repeats, number);
del1 = 0;
del2 = 0;
}
for (const int& number: arrNumbers) {
sort(arrNumbers.begin(), arrNumbers.end());
}
return 0;
}
intmain(){
int n=0;
标准:cin>>n;
std::向量arr数;
int requestLine=0;
std::字符串行;
双procent=0;
如果(n>99){
std::cout num;
arrNumbers。推回(num);
}
std::cin>>请求行;
for(int i=0;i>指数;
数字TR>>数字;
重复sstr>>重复;
插入(arrNumbers.begin()+索引-1,重复,编号);
del1=0;
del2=0;
}
用于(常量整数和编号:ARR编号){
排序(arrNumbers.begin(),arrNumbers.end());
}
返回0;
}
您是否验证程序是否进入循环?
检查其前面的“n”值。是否尝试过将
std::cin.ignore()
行移出循环,并在上一个std::cin
的正下方移动?我还认为您的std::stringstream
知识可能需要一些调整。一个stringstream将很好地为所有三个变量提供数据。std::cin.ignore(256,'\n')
call将忽略行尾之前的所有字符。在循环的第一次迭代中,它会吃掉std::cin>>requestLine
之后剩下的EOL。在循环的第二次迭代中,它吃掉了整个第二行输入。@sweenish谢谢,你解决了我的问题,我同意stringstream。谢谢你的帮助,问题是因为cin.ignore()。