你怎么改变阵列?

时间:2015-04-25 17:24:26

标签: c++ arrays

帮助!我试图在我的数组中用''替换'a'和'e',但它不断替换所有的数组。

    for(int x = 0; x < array_length); x++)
    { 
      if(city_name[x] == 'a' || 'e')
        city_name[x] = " ";
    }

2 个答案:

答案 0 :(得分:4)

if(city_name[x] == 'a' || 'e')

应该是

if(city_name[x] == 'a' || city_name[x] == 'e')

您的代码等同于

if( ( city_name[x] == 'a' ) || 'e')

执行city_name[x] == 'a',然后检查result of that statement || 'e'

答案 1 :(得分:1)

首先,循环是错误的。它包含一个拼写错误

for(int x = 0; x < array_length); x++)
                              ^^^

删除多余的括号。

也是这种情况

city_name[x] == 'a' || 'e'

始终等于true,因为它等同于

( city_name[x] == 'a'  ) || 'e'

而不是字符串文字" ",你必须使用字符文字' '

正确的循环可能看起来像

for ( int i = 0; i < array_length; i++ )
{ 
    if ( city_name[i] == 'a' || city_name[i] == 'e' ) city_name[i] = ' ';
}

考虑到标头std::replace_if中声明的标准算法<algorithm>可用于代替循环。例如

std::replace_if( city_name, city_name + array_length,
                 []( char c ) { return c == 'a' || c == 'e'; },
                 ' ' );