为什么我的程序会跳过一步

时间:2013-12-19 23:29:26

标签: c++ input struct io

这是我的主要内容:

#include<iostream>
#include<limits>
#include"header.h"
#include<map>
#include<string>
#include<sstream>
using namespace std;

int main(){

        bool setflag = true;
    string inputcmd;

    while(setflag){
        cout << "TYPE A COMMAND" << endl;

        cin>> inputcmd;

        if (inputcmd == "make"){
                cout << "MAKING NEW PROJECT" << endl;
                get_project(cin);
            } 

        else if (inputcmd == "retrieve"){
                cout << "RETRIEVING YOUR PROJECT" << endl;
            }

        else if (inputcmd == "quit")
        { setflag = false; }

        else { cout << "invalid input please try again"; }

    }

return 0;
}

这是我的结构代码:

using namespace std;

typedef struct{
    string proname;
    string prodesc;
    string protime;
}project;

这是我的标题代码(我的所有函数定义都在这里):

#include<iostream>
#include"project_struct.cpp"
#include<map>

project current;
map<string, project> promap;


string getFileContents(istream& file_contents){
    string line;
    getline(file_contents, line);

    return line;
} 


void get_project(istream& in){
project newproject;
    cout << "Enter your project name: ";
    newproject.proname = getFileContents(cin);

    cout << "Enter a description: ";
    newproject.prodesc = getFileContents(cin);

    cout << "How long until deadline: ";
    newproject.protime = getFileContents(cin);

    promap.insert(pair<string, project> ( newproject.proname , newproject));
    cout << endl << "You created a new project: " << newproject.proname
    << endl << "Project description: " << newproject.prodesc << endl;

}

我的问题是这个,出于某种原因,当我输入make时,在我的cmd控制台输入它,创建一个新项目但跳过项目的名称,换句话说它不会请求我的项目名称,它会去直接询问我的项目说明。这是为什么?我该如何解决?

1 个答案:

答案 0 :(得分:0)

我想我明白了。如果我把

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

在我的cin>>inputcmd; main()之后,它似乎解决了问题。

快乐编码每个人:)