为什么我的 if 语句不适用于 c++ 中的字符串?

Why are my if statements not working with strings in c++?

本文关键字:字符串 c++ 适用于 我的 if 语句 不适用 为什么      更新时间:2023-10-16

我是 c++ 的新手,我尝试在谷歌上搜索一个解决方案,但我遇到的每一个都与我面临的问题如此不同,所以我无法弄清楚。我遇到的问题是,当我从 powershell 运行.exe时,我的"if"语句被完全忽略。

https://pastebin.com/aE6MiQig

#include <iostream>
#include <string>
using namespace std;
int main()
{
string q;
string w;
string Bob;
string Emily;
{
cout << "Who is this? ";
cin >> q;
if (q == Bob)
{
cout << "Hey there bro. ";
}
if (q == Emily)
{
cout << "Hi friend :) ";
}
else
{
cout << "Oh hey " << q << ", how are you? ";
}
cin >> w;
cout << "Hey, that's " << w;
}
return 0;
}

当我输入我的名字作为"Bob"时,我应该看到来自if语句"Hey there兄弟"的消息,但我看到的是else语句,"哦,嘿Bob,你好吗?"。当我输入艾米丽时也是如此。只看到 else 语句。

我没有收到任何错误(在视觉工作室中运行它(,所以我在哪里搞砸了?

为什么不直接与字符串进行比较呢?

#include <iostream>
#include <string>
int main()
{
std::string q;
std::string w;
std::cout << "Who is this? ";
std::cin >> q;
if (q == "Bob") // note the quotation marks around Bob
{
std::cout << "Hey there bro. " << std::endl;
}
else if (q == "Emily") // note the quotation marks around Emily
{
std::cout << "Hi friend :) " << std::endl;
}
else
{
std::cout << "Oh hey " << q << ", how are you? ";
std::cin >> w;
std::cout << "Hey, that's " << w << std::endl;
}
return 0;
}

此外,应避免using namespace std,因为它会导致命名空间污染。相反,你可以像我上面所做的那样,把 std:: 放在stringcincoutendl前面,或者为每个语句包含一个 using 语句,如下所示:

using std::string;
using std::cin;
using std::cout;
using std::endl;

std::string带有自己的operator==,比较字符串的内容

string Bob;
string Emily;

好吧,现在您已经创建了两个字符串,它们都使用默认构造函数,因此它们都是字符串(即它们都将比较等于""(。

您需要为它们分配一个值:

string Bob("Emily");
string Emily("Bob");

我故意给他们分配相反!尝试这段代码,你会发现自己是与比较相关的内容,而不是变量的名称......

您从用户那里获取string q的值,并将其与string Emilystring Bob进行比较,两者都没有分配任何值。

我遇到的问题是,当我从 powershell 运行.exe时,我的"if"语句被完全忽略。

您的if语句不会被忽略,而是将string q与"进行比较。

您可以给出string Bobstring Emily初始值:

#include <iostream>
#include <string>
int main()
{
std::string Bob = "Bob";
std::string Emily = "Emily";
std::string q;
}

这样,您就可以比较从cin获得的值

#include <iostream>
#include <string>
int main()
{
std::string Bob = "Bob";
std::string Emily = "Emily";
std::string q;
std::cout<<"What is your name? ";
std::cin>>q; //Obtain value from cin
if(q == Emily){}//If q is Emily, then do something
}

您可以在此处和此处阅读有关默认变量值的更多信息。