gpt4 book ai didi

c++ - 程序跳过第二个 cin

转载 作者:太空宇宙 更新时间:2023-11-03 10:46:54 25 4
gpt4 key购买 nike

我正在制作一个 C++ Mind Reader 程序,该程序已接近完成。但是,感觉有必要跳过第二个cin。我已经搜索过了,但我不确定出了什么问题。我检查了代码,我敢打赌我做了一些愚蠢的事情,但我仍然对此感到困惑。跳过的 cin 在第 32 行,这是我的代码:

#include <iostream>
#include <string>
#include <cstdlib>

using namespace std;

int main()
{
//declaring variables to be used later
string name;
string country;
int age;

//header goes below
cout << " @@@@@@@@@@@@-MIND READER-@@@@@@@@@@@@\n\n";

//asks if the user would like to continue and in not, terminates
cout << "Would like you to have your mind read? Enter y for yes and n for no." << endl;
cout << "If you do not choose to proceed, this program will terminate." << endl;
string exitOrNot;
//receives user's input
cin >> exitOrNot;
//deals with input if it is 'y'
if (exitOrNot == "y"){
cout << "Okay, first you will need to sync your mind with this program. You will have to answer the following questions to synchronise.\n\n";

//asks questions
cout << "Firstly, please enter your full name, with correct capitalisation:\n\n";
cin >> name;

cout << "Now please enter the country you are in at the moment:\n\n";
cin >> country; //<------ Line 32

cout << "This will be the final question; please provide your age:\n\n";
cin >> age;

//asks the user to start the sync
cout << "There is enough information to start synchronisation. Enter p to start the sync...\n\n";
string proceed;
cin >> proceed;
//checks to see if to proceed and does so
if (proceed == "p"){
//provides results of mind read
cout << "Sync complete." << endl;
cout << "Your mind has been synced and read.\n\n";
cout << "However, due to too much interference, only limited data was aquired from your mind." << endl;
cout << "Here is what was read from your mind:\n\n";

//puts variables in sentence
cout << "Your name is " << name << " and you are " << age << " years old. You are based in " << country << "." << endl << "\n\n";

cout << "Thanks for using Mind Reader, have a nice day. Enter e to exit." << endl;
//terminates the program the program
string terminate;
cin >> terminate;
if (terminate == "e"){
exit(0);
}

}

}
//terminates the program if the input is 'n'
if (exitOrNot == "n"){
exit(0);
}

return 0;
}

编辑:这是我运行它时发生的情况:

                     @@@@@@@@@@@@-MIND READER-@@@@@@@@@@@@

Would like you to have your mind read? Enter y for yes and n for no.
If you do not choose to proceed, this program will terminate.
y
Okay, first you will need to sync your mind with this program. You will have to
answer the following questions to synchronise.

Firstly, please enter your full name, with correct capitalisation:

John Smith
Now please enter the country you are in at the moment:

This will be the final question; please provide your age:

13
There is enough information to start synchronisation. Enter p to start the sync.
..

p
Sync complete.
Your mind has been synced and read.

However, due to too much interference, only limited data was aquired from your m
ind.
Here is what was read from your mind:

Your name is John and you are 13 years old. You are based in Smith.


Thanks for using Mind Reader, have a nice day. Enter e to exit.
e

Process returned 0 (0x0) execution time : 78.220 s
Press any key to continue.

这里是一个截图,可以更清楚地说明:http://puu.sh/4QZb3.png我无法在这篇文章中附上它,因为我没有足够的代表。

还值得注意的是它如何使用用户的姓氏作为国家/地区。我认为问题与输入不是整数有关。

谢谢。

最佳答案

cin 只能输入一个单词。相反,请使用 getline(cin, string name); 如果它仍然不起作用,请在 getline(cin,字符串名称);,像这样:

string country;
cout << "Now please enter the country you are in at the moment:\n\n";
cin.ignore();
getline(cin, country);

这现在肯定会起作用。

关于c++ - 程序跳过第二个 cin,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19390059/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com