これは私のコードです:
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を入力したときのように奇妙な結果が得られ、「プロジェクト名を入力してください:」をスキップし、「プロジェクトの説明を入力してください」を正しく実行することです。なぜそれをするのですか?後続のすべてのループで正しく機能し、最初にプロジェクト名を尋ねて入力を待ちます。