【发布时间】:2015-10-09 15:11:34
【问题描述】:
#include <iostream>
#include <string>
#include <stdlib.h>
using namespace std;
int main()
{
string x;
cin>>x;
if(strcmp(&x.at(0), "M") == 0)
{
cout<<"midget ";
}
else if(strcmp(&x.at(0), "J") == 0)
{
cout<<"junior ";
}
else if(strcmp(&x.at(0), "S") == 0)
{
cout<<"senior ";
}
else
{
cout<<"invalid code";
}
if(strcmp(&x.at(1), "B") == 0)
{
cout<<"boys";
}
else
{
cout<<"girls";
}
return 0;
}
我使用上面的代码比较了应该返回“侏儒男孩”的 MB,但它不断下降到 else 并返回“无效的代码男孩”。不知何故,第二个条件工作正常。我的诊断结果告诉我,在第一次比较时它返回66。我猜那是“M”的ASCII码。但是我现在该如何解决我的问题呢?
【问题讨论】:
-
您可以使用
x.at(n) == 'a'来比较单个字符。 -
@NeilKirk 它说:int 和 char* 之间的比较无效
-
@NeilKirk 你是对的。我对char使用了双引号。 :(
标签: c++ string if-statement strcmp