C ++, как превратить все `\` в `/` внутри строки? - PullRequest
0 голосов
/ 23 августа 2011

Так что я пытаюсь std::replace(diff_path.begin(), diff_path.end(), "\\", "/");, но, похоже, не скомпилирую в моей визуальной студии.Что делать - как превратить все \ в / внутри строки?

Error   3   error C2446: '==' : no conversion from 'const char *' to 'int'  c:\program files (x86)\microsoft visual studio 10.0\vc\include\algorithm    1311    1   CloudServerPrototype

Error   5   error C2440: '=' : cannot convert from 'const char [2]' to 'char'   c:\program files (x86)\microsoft visual studio 10.0\vc\include\algorithm    1312    1   CloudServerPrototype    

Error   4   error C2040: '==' : 'int' differs in levels of indirection from 'const char [2]'    c:\program files (x86)\microsoft visual studio 10.0\vc\include\algorithm    1311    1   CloudServerPrototype

Ответы [ 2 ]

9 голосов
/ 23 августа 2011

Вам нужно использовать символьные литералы, а не строковые литералы:

std::replace(diff_path.begin(), diff_path.end(), '\\', '/');
                                                 ^~~~  ^~~

value_type для std::string равно char (каждый элемент в строке - один символ).

4 голосов
/ 23 августа 2011

Вы сделали это правильно в заголовке вашего вопроса.Исправлено:

 std::replace(diff_path.begin(), diff_path.end(), '\\', '/');

Элементами std :: string являются символы, а не строки.

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