输入字符串用if改为数字再使用switch问题

我想把输入的字符串变成对应的数字,比如说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;
    }
}

img

img



#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;
    }
}