我有这个(我刚开始学习btw):
#include <iostream>
#include <string>
using namespace std;
int main()
{
string mystr;
cout << "Welcome, what is your name? ";
getline(cin, mystr);
cout << "Nice to meet you, " << mystr << endl;
cout << "May i call you 1 for short? (y/n)" << endl;
getline(cin, mystr);
}
我想接下来说;
cout << "Thank you, 1" << endl;
OR:
cout << "Well ok, " << mystr << endl;
...基于用户是否输入了y或n。我怎么会这样呢?我一直环顾四周,但我真的不知道如何说出来。我使用的是Visual Studio Express,它是一个控制台应用程序。
答案 0 :(得分:2)
以一种非常简单的方式:
if (mystr == "1") {
// ...
}
但是你应该习惯于更多的错误检查,所以在getline
之后检查流的状态:
getline(cin, mystr);
if (cin) {
if (mystr == "1") {
// ...
}
} else {
// error
}
当然,您可能希望将来支持任何数字,而不仅仅是1.然后您需要将输入字符串转换为数字。如果您使用C ++ 11,请参阅std::stoi
,或查看有关字符串到数字转换的数千个Stackoverflow问题:)
编辑:注意到您确实想要检查“y”。嗯,那就是一样的:
if (mystr == "y") {
// ...
}
答案 1 :(得分:1)
您应该使用if-else语句。例如
#include <cctype>
//...
std::string name = mystr;
std::cout << "May i call you 1 for short? (y/n)" << std::endl;
std::getline( std::cin, mystr );
for ( char &c : mystr ) c = std::tolower( c );
if ( mystr == "y" )
{
name = "1";
std::cout << "Thank you, " << name << std::endl;
}
else
{
std::cout << "Well ok, " << name << std::endl;
}