这是我的主要内容:
#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控制台输入它,创建一个新项目但跳过项目的名称,换句话说它不会请求我的项目名称,它会去直接询问我的项目说明。这是为什么?我该如何解决?
答案 0 :(得分:0)
我想我明白了。如果我把
cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
在我的cin>>inputcmd;
main()
之后,它似乎解决了问题。
快乐编码每个人:)