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;
}
为什么我只能在第一个if语句中设置f,程序不会停止在其他语句中?
答案 0 :(得分:3)
您应该将int f
更改为char f
答案 1 :(得分:2)
int f =0;
std::cin >>f;
std::cin
读取并解释字符序列。
如果f
是int
,则会使用提取运算符int
的{{1}}重载。此运算符将尝试将输入格式化为整数。
如果用户传递了字符operator>>
,则操作员将无法将其解释为整数,并将'y'
存储在0
中。您可以使用f
检查流的错误状态。
如果你想阅读一个角色,你必须使用cin.fail()
。
答案 2 :(得分:0)
在第二个区块中,您正在阅读k但是使用y ...
std::cin >>k;
if(k == 'y' || k=='n'){
if (f =='y'){
this->decisionvector[1] = 2;
}else
this->decisionvector[1] = 0;
f= 0;
}