неверное преобразование из 'const char *' в 'char' - PullRequest
6 голосов
/ 10 ноября 2011

Я пытаюсь заменить определенный символ в строке пробелом, используя следующую строку кода:

str[i] = " ";

Как это понять, не получив ошибку в названии вопроса?

Ответы [ 2 ]

16 голосов
/ 10 ноября 2011

использовать одинарные кавычки

str[ i ] = ' ';

В C ++ токен "" - это строковый литерал, представляющий массив из двух символов: значение пробела в наборе символов (например, значение 32 в ascii) и ноль. С другой стороны, токен '' представляет один символ со значением пробела (обычно 32). Обратите внимание, что в C токен '' представляет целое число со значением пробела. (В C sizeof ('') == sizeof (int), а в C ++ sizeof ('') == 1.)

5 голосов
/ 10 ноября 2011

одинарные char литералы получены с одинарными кавычками:

str[i] = ' ';

Литерал с двойными кавычками является полным строковым литералом (массив с нулевым символом в конце char), но вы заменяете только один char.

...