Страницы

Поиск по вопросам

четверг, 18 октября 2018 г.

Заменить символ '/' на “\\”

Нужно в строке заменить все символы / на \\. Делал следующим образом:
string s; cin >> s; for(int i = 0; i < s.size(); i++) { if(s[i] == '/') { s.replace(i, 1, "\\"); } }
Но почему-то получается так, что символ / заменяется только на \, а не на \\


Ответ

Дело в том, что "\\" и есть одиночный бекслеш. Попробуйте "\\\\"

В C++ в строковых литералах \ является специальным экранирующим символом: он означает не себя, а просто модифицирует значение следующего за ним символа. Например,
означает не бекслеш и символ n, а перевод строки, символ с кодом 0x10.
Поэтому сам по себе бекслеш не означает бекслеш. Для ввода бекслеша нужно использовать \\
Вы можете проверить длину строки "\\\\", она равна 2. (Проверка: http://ideone.com/DhxHe8)

Это, кстати, возможно, и есть причина странного поведения редактора по отношению к двойному бекслешу.

Комментариев нет:

Отправить комментарий