我正在尝试创建一个用字符串中的空格替换0,1或2的函数。我通过迭代字符串并比较每个字符来实现它。
如果我比较 str_in [i] =='0',我的功能将起作用,但如果我添加or语句则不返回任何内容。
段:
string omit_num( string ) {
int i ;
str_len = str_in.length();
str_out = "" ;
for( i = 0 ; i < str_len ; i ++ ){
cout << str_in[i] << endl;
if ( str_in[i] == '0' || '1' || '2')
app = " " ;
else
app = str_in[i];
str_out.append(app) ;
}
return str_out;
}
答案 0 :(得分:11)
你需要
if ( str_in[i] == '0' || str_in[i] =='1' || str_in[i] =='2')
答案 1 :(得分:6)
每次都要重复测试,'1','2'本身基本上是小的并且评估为真。它应如下所示:
if (str_in[i] == '0' || str_in[i] == '1' || str_in[i] == '2')
答案 2 :(得分:4)
表达式str_in[i] == '0' || '1' || '2'
包含三个单独的表达式:
str_in[i] == '0'
'1'
'2'
根据任何ASCII图表,'0'的值为48,'1'为49,'2'为50.因此最后两个表达式始终为非零(因此始终为真)。
你可能想要str_in[i] == '0' || str_in[i] == '1' || str_in[i] == '2'
答案 3 :(得分:4)
if (str_in[i] == '0' || str_in[i] == '1' || str_in[i] == '2')
或者
switch (str_in[i]) {
case '0':
case '1':
case '2': app = " " ;
break;
default: app = str_in[i];
}
答案 4 :(得分:3)
'1'为'1'因此'1'的计算结果为真。您必须为每个操作员制作新的,完整的陈述。
试试这个:
if ( str_in[i] == '0' || str_in[i] == '1' || str_in[i] == '2' )
答案 5 :(得分:3)
您的if语句如下所示:如果i
处的字符等于'0'
,或'1'
为真,或'2'
为真。由于'1'
和'2'
都计算为非零整数,因此它始终为真。
你想要的是:str_in[i] == '0' || str_in[i] == '1' || str_in[i] == '2'
答案 6 :(得分:1)
不确定整体逻辑,但这里的逻辑特别错误。取代
if ( str_in[i] == '0' || '1' || '2')
与
if ( str_in[i] == '0' || str_in[i] == '1' || str_in[i] == '2')
答案 7 :(得分:1)
将您的if语句更改为:
if ( str_in[i] == '0' || str_in[i] == '1' || str_in[i] == '2') {
...
}
答案 8 :(得分:1)
string omit_num( string ) {
int i ;
str_len = str_in.length();
str_out = "" ;
for( i = 0 ; i < str_len ; i ++ ){
cout << str_in[i] << endl;
if ( str_in[i] == '0' || '1' || '2')
app = " " ;
else
app = str_in[i];
str_out.append(app) ;
}
return str_out;
}
这将如下工作:
string omit_num( string ) {
int i ;
str_len = str_in.length();
str_out = "" ;
for( i = 0 ; i < str_len ; i ++ ){
cout << str_in[i] << endl;
if ( (str_in[i] == '0') || (str_in[i] == '1') || (str_in[i] == '2'))
app = " " ;
else
app = str_in[i];
str_out.append(app) ;
}
return str_out;
}
答案 9 :(得分:1)
您需要在每个||中应用相等运算符表达式:
if (str_in[i] == '0' || str_in[i] == '1' || str_in[i] == '2')
答案 10 :(得分:0)
如果您使用的是c ++,请使用标准库:
std::replace_if( s.begin(), s.end(), [](char a){return a=='0'||a=='1'||a=='2';}, ' ');