我正在创建的程序中的while循环出现问题。
基本上是假设在输入ctrl + D之前要求用户输入(这些条目最终将存储在数组中,但是我只是想在开始该步骤之前检查输出)

问题是当我退出变量时,第一行丢失了。

int main()
{
    string title;
    string url;
    string comment;
    double length = 0.0;
    int rating = 0;
    string sort_method;

    cin >> sort_method;

while(getline(cin,title))
{
        getline(cin, title);
        getline(cin, url);
        getline(cin, comment);
        cin >> length;
        cin >> rating;
        cin.ignore();

}
    cout << title << endl;
    cout << url << endl;
    cout << comment << endl;
    cout << length << endl;
    cout << rating << endl;


感谢您的帮助。

最佳答案

我编译了您的代码。您没有在while主体中发出任何命令来中断while。

(1)您已经使用了cin.ignore();函数而不是使用此函数(cin.ignore(256,'\ n'))。这有助于为下一个输入获取cin的空缓冲区。
(2)您需要关注应该中断循环的条件。我在这里cnsidering您的第一个输入变量标题。在while循环中,while条件之后的第一个语句应该是(诸如title(Mr。Miss。Mrs.)之类的特定决策条件)之类的if(title!=“ Mr.” || title!=“ Miss。” || title !=“夫人。”)比休息;
(3)用于将所有输入显示为输出。您应该存储它们。如果您不想这样做,请将所有cout语句放入while循环内。

#include <iostream>
using namespace std;
int main()
{
   string title;
   string url;
   string comment;
   double length = 0.0;
   int rating = 0;
   string sort_method;
   cin >> sort_method;

   while(getline(cin,title))
   {
       // use operator overloading
       if(title!="Mr."||title!="Mrs."||title!="Miss.")
            break;
       getline(cin, url);
       getline(cin, comment);
       cin >> length;
       cin >> rating;
       cin.ignore(256,'\n');
       cout << title << endl;
       cout << url << endl;
       cout << comment << endl;
       cout << length << endl;
       cout << rating << endl;
       cout<<"for quit press 'q'"<<endl;
   }
   return 0;
}


希望这可以帮助您...

关于c++ - C++ while循环和getline问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26071275/

10-11 22:21
查看更多