我有一个问题,我根本想不通!
在我的程序中,用户输入要排序的数字。我必须能够对无穷大,负无穷大和所谓的“无效”进行排序(这些我在程序的早期定义)
如果用户想要输入无穷大,例如他们必须在字符串中输入“Pinf”。
我的问题是我将用户输入存储在std :: string中,然后检查字符串是否为“pinf”或“Pinf”,即使我已输入数字3,因此字符串为“3”,它仍然是进入if语句,我做错了什么?!
我的代码如下;
string Temp;
cin>> Temp;
if (Temp.find("Pinf")||Temp.find("pinf")) {
Num = Pinfinity;
}
它认为if语句每次都是真的。
答案 0 :(得分:2)
1.错误 - 您使用|
代替||
。
2.Error - find
返回
第一场比赛的第一个角色的位置。如果没有匹配 找到后,该函数返回string :: npos。 你应该改变
if (Temp.find("Pinf")|Temp.find("pinf")) {
到
if ((Temp.find("Pinf") != string::npos) || (Temp.find("pinf") != string::npos)) {
答案 1 :(得分:1)
如果您只是搜索Pinf或pinf,那么您可以使用它。请注意逻辑或运算符为||
。
if (Temp == "Pinf" || Temp == "pinf") {
答案 2 :(得分:0)
|
是一个按位或运算符。使用||
代替|
if ( Temp.find("Pinf") != npos || Temp.find("pinf") != npos )