C ++ - 布尔运算

时间:2014-04-12 12:07:48

标签: c++ variables visual-c++ input boolean

我有这个(我刚开始学习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,它是一个控制台应用程序。

2 个答案:

答案 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;
}