我是使用c ++的新手,我尝试使用谷歌搜索解决方案,但是遇到的每个问题与我所面临的问题截然不同,所以我无法弄清楚。从Powershell运行.exe时,我遇到的问题是我的“ if”语句被完全忽略了。
#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 bro”的消息。但是我看到的是else语句,“哦,鲍勃,你好吗?”。当我输入Emily时也是如此。只看到else语句。
我没有收到任何错误(在Visual Studio中运行此错误),那么我在哪里弄糟呢?
答案 0 :(得分:4)
为什么不直接与字符串进行比较?
#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
,因为它会导致namespace pollution。相反,您可以像上面所做的那样,将std ::放在string
,cin
,cout
和endl
的前面,或者为每个变量包括using语句具体来说就是这样:
using std::string;
using std::cin;
using std::cout;
using std::endl;
答案 1 :(得分:1)
std::string
带有自己的operator==
,用于比较字符串的内容。
string Bob;
string Emily;
好吧,现在您已经创建了两个字符串,都使用默认的构造函数,因此都是 empty 字符串(即它们都将等于""
)。
您需要为其分配一个值:
string Bob("Emily");
string Emily("Bob");
我特意给他们分配了逆数!尝试这段代码,您将发现自己是与比较相关的内容,而不是变量名 ...
答案 2 :(得分:1)
您从用户那里获得了string q
的值,并将其与string Emily
或string Bob
进行比较,二者均未分配任何值。
我遇到的问题是,当我从powershell运行.exe时,“ if”语句会被完全忽略。
您的if
语句不会被忽略,而是将string q
与“”进行比较。
您可以给string Bob
和string 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
}