C++ 这部分c+有什么问题+;密码 intf=0; std::cout f; 如果(f='y'| f=='n'){ 如果(f='y'){ 此->决策向量[0]=1; }否则 此->决策向量[0]=0; } std::cout f; 如果(f='y'| f=='n'){ 如果(f='y'){ 此->决策向量[1]=2; }否则 此->决策向量[1]=0; f=0; } std::cin.clear(); std::cout f; 如果(f='y'| f=='n'){ 如果(f='y'){ 此->决策向量[2]=4; }否则 此->决策向量[2]=0; f=0; } std::cin.clear(); std::cout f; 如果(f='y'| f=='n'){ 如果(f='y'){ 此->决策向量[3]=8; }否则 此->决策向量[3]=0; f=0; }

C++ 这部分c+有什么问题+;密码 intf=0; std::cout f; 如果(f='y'| f=='n'){ 如果(f='y'){ 此->决策向量[0]=1; }否则 此->决策向量[0]=0; } std::cout f; 如果(f='y'| f=='n'){ 如果(f='y'){ 此->决策向量[1]=2; }否则 此->决策向量[1]=0; f=0; } std::cin.clear(); std::cout f; 如果(f='y'| f=='n'){ 如果(f='y'){ 此->决策向量[2]=4; }否则 此->决策向量[2]=0; f=0; } std::cin.clear(); std::cout f; 如果(f='y'| f=='n'){ 如果(f='y'){ 此->决策向量[3]=8; }否则 此->决策向量[3]=0; f=0; },c++,C++,为什么我只能在第一条语句中设置f,如果程序没有在其他语句中停止 在第二个块中,您正在读取k,但使用y int f =0; std::cout << " do you want to use 1. component y or n " << std::endl; std::cin >>f; if(f == 'y' || f =='n'){ if (f =='y'){ this->decisio

为什么我只能在第一条语句中设置f,如果程序没有在其他语句中停止

在第二个块中,您正在读取k,但使用y

int f =0;
    std::cout << " do you want to use 1. component y or n " << std::endl;
    std::cin >>f;
    if(f == 'y' || f =='n'){
        if (f =='y'){
            this->decisionvector[0] = 1;
        }else 
            this->decisionvector[0] = 0;

    }

    std::cout << " do you want to use 2. component y or n " << std::endl;
    std::cin >>f;
    if(f == 'y' || f=='n'){
        if (f =='y'){
            this->decisionvector[1] = 2;
        }else 
            this->decisionvector[1] = 0;
        f= 0;
    }
    std::cin.clear(); 
    std::cout << " do you want to use 3. component y or n " << std::endl;
    std::cin >>f;
    if(f == 'y' || f =='n'){
        if (f =='y'){
            this->decisionvector[2] = 4;
        }else 
            this->decisionvector[2] = 0;
        f= 0;
    }
    std::cin.clear(); 
    std::cout << " do you want to use 4. component y or n " << std::endl;
    std::cin >>f;
    if(f == 'y' || f =='n'){
        if (f =='y'){
            this->decisionvector[3] = 8;
        }else 
            this->decisionvector[3] = 0;
        f= 0;
    }

在第二个区块中,您正在阅读k,但使用y

int f =0;
    std::cout << " do you want to use 1. component y or n " << std::endl;
    std::cin >>f;
    if(f == 'y' || f =='n'){
        if (f =='y'){
            this->decisionvector[0] = 1;
        }else 
            this->decisionvector[0] = 0;

    }

    std::cout << " do you want to use 2. component y or n " << std::endl;
    std::cin >>f;
    if(f == 'y' || f=='n'){
        if (f =='y'){
            this->decisionvector[1] = 2;
        }else 
            this->decisionvector[1] = 0;
        f= 0;
    }
    std::cin.clear(); 
    std::cout << " do you want to use 3. component y or n " << std::endl;
    std::cin >>f;
    if(f == 'y' || f =='n'){
        if (f =='y'){
            this->decisionvector[2] = 4;
        }else 
            this->decisionvector[2] = 0;
        f= 0;
    }
    std::cin.clear(); 
    std::cout << " do you want to use 4. component y or n " << std::endl;
    std::cin >>f;
    if(f == 'y' || f =='n'){
        if (f =='y'){
            this->decisionvector[3] = 8;
        }else 
            this->decisionvector[3] = 0;
        f= 0;
    }

您应该将
int f
更改为
char f

您应该将
int f
更改为
char f

std::cin >>k;
if(k == 'y' || k=='n'){
    if (f =='y'){
        this->decisionvector[1] = 2;
    }else 
        this->decisionvector[1] = 0;
    f= 0;
}
读取并解释字符序列

如果
f
int
,它将使用提取操作符
操作符>
int
重载。此运算符将尝试将输入格式化为整数

如果用户传递字符
'y'
,操作员将无法将其解释为整数,并将
0
存储在
f
中。您可以使用
cin.fail()
检查流的错误状态

如果要读取字符,必须使用
char

读取并解释字符序列

如果
f
int
,它将使用提取操作符
操作符>
int
重载。此运算符将尝试将输入格式化为整数

如果用户传递字符
'y'
,操作员将无法将其解释为整数,并将
0
存储在
f
中。您可以使用
cin.fail()
检查流的错误状态


如果要读取字符,必须在读入
k
但比较
f
的第二个块中使用
char

。这显然是错误的。我编辑了代码,但仍然存在相同的问题。使用调试器逐步检查代码,并查看发生了什么。在第一个if语句f为0之后,在cin>>中,f没有等待输入?在第二个块中,您正在读取
k
,但正在比较
f
。这显然是错误的。我编辑了代码,但仍然存在同样的问题。使用调试器逐步检查代码,看看发生了什么。在第一个if语句f为0之后,在cin>>中,f没有等待输入?我只是猜测,但我想到的第一件事是关于char和int的物理维度(8位,16代表unicode,4字节代表int)。是的,你可以用一个数字来检查字符,比如'c'==35,但我认为使用int变量是不安全和正确的。@Engine
std::cin::operator>>(int&)
将字符序列解析为一个整数值。
std::operator>>(istream&is,char&c)
将提取字符并按原样存储其值。我只是猜测,但我想到的第一件事是关于字符和int的物理尺寸(8位,unicode为16位,int为4字节)是的,你可以用一个数字来检查字符,比如'c'==35,但我认为使用int变量是不安全和正确的。@Engine
std::cin::operator>>(int&)
将把字符序列解析成整数值。
std::operator>(istream&is,char&c)
将提取字符并按原样存储其值。