我想把输入的字符串变成对应的数字,比如说6个o对应1,然后用switch检测1来实现输入6个o对应到case 1里,但是输出的文字一直是最后一个case,很奇怪。
我想实现的效果为,输入6个o,输出文本1。但是现在输出的是文本3,输入其他值也是文本3
#include<iostream>
using namespace std;
int main()
{
char a;
cin>>a;
if(a='oooooo')a=1;
if(a='ooooox')a=2;
if(a='ooooxx')a=3;
switch(a)
{
case 1:cout<<"文本1"<<endl;break;
case 2:cout<<"文本2"<<endl;break;
case 3:cout<<"文本3"<<endl;break;
}
}
#include<iostream>
#include<string>
using namespace std;
int main()
{
string a;
cin>>a;
if(a=="oooooo")a[0]=1;
if(a=="ooooox")a[0]=2;
if(a=="ooooxx")a[0]=3;
switch(a[0])
{
case 1:cout<<"文本1"<<endl;break;
case 2:cout<<"文本2"<<endl;break;
case 3:cout<<"文本3"<<endl;break;
}
}
因为a是char类型,只能存储一个字符,所以你在if里面用赋值语句,a的值永远为o,因为o为非0值,因此三条if语句都执行,a的值在switch判断时为3,因此结果输出文本3
错误有几处修改如下:
#include<iostream>
using namespace std;
int main()
{
int a;
string b;
cin>>b;
if(b=="oooooo") a=1;
else if(b=="ooooox") a=2;
else if(b=="ooooxx") a=3;
else a=0;
switch(a)
{
case 1:cout<<"文本1"<<endl;break;
case 2:cout<<"文本2"<<endl;break;
case 3:cout<<"文本3"<<endl;break;
default:cout<<"输出了其他值"<<endl;break;
}
}