如何在循环c ++中使用getline

时间:2014-04-14 07:03:56

标签: c++

我在循环中使用getline()。在第一个循环期间,一切都运行正常,除了最后一个getline()。在第二个循环期间,第一个getline()似乎已被跳过。这是循环:

while(true)
    {
        cout <<endl<< "Enter Student's Name: ";
        getline(cin,tmp_name);
        cout << "Enter Student's RegNo: ";
        getline(cin,tmp_regno);
        cout << "Enter Student's marks: ";
        cin>>tmp_marks;
        mystudents.push_back(student(tmp_name,tmp_regno,tmp_marks));
        mystudents[no_ofStudents].getGrade();
        no_ofStudents++;
        cout<<endl<<endl<<"Do you wish to continue? To continue enter yes or any other key to stop: ";
        getline(cin,continue_stop);
        if (continue_stop!="yes"&&continue_stop!="YES")
            break;
    }

4 个答案:

答案 0 :(得分:1)

cin >> tmp_marks;

在输入流中留下换行符(&#39; \ n&#39;)。你必须找到一种方法来读取之后的所有内容,直到下一个换行符。

答案 1 :(得分:1)

另一件事

if (continue_stop!="yes"&&continue_stop!="YES")
   break;

这将在错误的时间中断while循环。

答案 2 :(得分:1)

cin >> tmp_marks;

在输入流中留下'\n',您将在下一次阅读

中阅读它
std::getline( std::cin,continue_stop);

您可以使用以下内容忽略此字符:

    std::cin>>tmp_name;
    std::cin.ignore();
    std::cout<<std::endl<<std::endl<<"Do you wish to continue?";
    std::getline( std::cin,continue_stop);
    if (continue_stop!="yes"&&continue_stop!="YES")
        break;

答案 3 :(得分:0)

cin.ignore(numeric_limits<streamsize>::max(),'\n');

在cin之后尝试使用这个