这是我的代码:
string getFileContents(istream& file_contents){
string line;
getline(file_contents, line);
return line;
}
project read_project(istream& in){
project newproject;
while(cin){
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 ;
}
}
int main(){
string inputcmd;
while (cin){
cout << "TYPE A COMMAND" << endl;
cin >> inputcmd;
if (inputcmd == "makenew")
cout << "MAKING NEW PROJECT";
read_project(cin);
}
return 0;
我的目标是成功地将项目类型存储在地图中。用户首先输入一个“命令”“makefile”,这会调用一个 read_project 函数,这两个函数都以 cin 作为参数进行操作。问题是当我运行代码时它会给出奇怪的结果,就像我第一次输入 makefile 时它会跳过“输入您的项目名称:”并且对于“输入您的项目描述”是正确的。为什么这样做?在所有后续循环中,它都能正常工作,首先询问项目名称并等待输入。