C ++ while循环和getline问题

时间:2014-09-27 04:24:48

标签: c++ loops while-loop getline

我在创建的程序中遇到问题。 基本上,假设在输入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;

我感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

我编译了你的代码。你没有给任何命令,而身体打破了一会儿。

(1)你使用过cin.ignore();函数而不是这个使用它(cin.ignore(256,&#39; \ n&#39;))。这有助于为下一次输入获取cin的空缓冲区 (2)你需要关注循环应该中断的条件。我在这里扼杀你的第一个输入变量标题。在while循环第一语句之后条件应该是(一个特定的决定条件,如标题(Mr。Miss.Mrs。))if if(title!=&#34; Mr。&#34; || title!=& #34;小姐。&#34; ||标题!=&#34;太太。&#34;)而不是休息; (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;
}

希望这可以帮助你...