strrchr вызывает 'Не удается преобразовать из const char * в char *' - PullRequest
2 голосов
/ 06 марта 2012

Я пытаюсь скомпилировать какой-то код, который мне дали, и который мне сказали, компилируется нормально. Возможно на другом компиляторе. Я использую VS2010, и у меня есть следующая строка:

char *dot = strrchr(filename, '.');

Это вызывает ошибку компилятора:

"ошибка C2440:« инициализация »: невозможно преобразовать из« const char * »в 'char *'

Как получилось? И как мне это исправить?

Ответы [ 2 ]

7 голосов
/ 06 марта 2012

Сообщение об ошибке довольно ясно. strrchr возвращает const char*. Итак, вам нужно:

const char *dot = strrchr(filename, '.');

Если вам действительно нужен char*, вы можете использовать strcpy для конвертации.

5 голосов
/ 06 марта 2012

C ++ имеет более разумные версии strchr и strrchr, чем C, благодаря перегрузке, так сказать:

const char * dot = strrchr(filename, '.');

В C, который не имеет перегрузки, у вас есть только одна функция char * strrchar(const char *, const char *), и вам решать, является ли результат постоянным или изменяемым, в зависимости от того, какой тип указателя будет подан в функцию. В С есть много таких небезопасных функций.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...