C++ 即使在相同字符串之间进行比较,strcmp()也会返回错误的值 #包括 #包括 #包括 使用名称空间std; int main() { 字符串x; cin>>x; if(strcmp(&x.at(0),“M”)==0) { cout
希望比较两个以null结尾的字符串。它将开始比较每个字符串的第一个字符。如果它们彼此相等,则继续对以下字符进行比较,直到字符不同或到达以null结尾的字符 您要比较两个字符。请尝试以下操作:C++ 即使在相同字符串之间进行比较,strcmp()也会返回错误的值 #包括 #包括 #包括 使用名称空间std; int main() { 字符串x; cin>>x; if(strcmp(&x.at(0),“M”)==0) { cout,c++,string,if-statement,strcmp,C++,String,If Statement,Strcmp,希望比较两个以null结尾的字符串。它将开始比较每个字符串的第一个字符。如果它们彼此相等,则继续对以下字符进行比较,直到字符不同或到达以null结尾的字符 您要比较两个字符。请尝试以下操作: #include <iostream> #include <string> #include <stdlib.h> using namespace std; int main() { string x; cin>>x; if(str
#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;
}
当解释为C样式字符串时,
&x.at(0)
实际上等同于x.C_str()
:这两个函数都返回指向字符串中第一个字符的指针。对C样式字符串进行操作的函数,如strcmp
,将通过读取到第一个空字符来确定字符串长度
因此,在您的示例中,您的第一个测试将“MB”与“M”进行比较
当然,您对第二个字符的测试是有效的,因为“B”后面紧跟着空分隔符
正如其他人已经说过的,您可以通过直接的
char
比较来做您需要的事情:x.at(0)='M'
您可以使用x.at(n)='a'
来比较单个字符。@NeilKirk它说:int和char之间的比较无效*@NeilKirk您是对的。我对char使用了双引号。@(
if(x.at(0) == 'M')
...