#cpp
Нужно в строке заменить все символы / на \\. Делал следующим образом: string s; cin >> s; for(int i = 0; i < s.size(); i++) { if(s[i] == '/') { s.replace(i, 1, "\\"); } } Но почему-то получается так, что символ / заменяется только на \, а не на \\.
Ответы
Ответ 1
Дело в том, что "\\" и есть одиночный бекслеш. Попробуйте "\\\\". В C++ в строковых литералах \ является специальным экранирующим символом: он означает не себя, а просто модифицирует значение следующего за ним символа. Например, \n означает не бекслеш и символ n, а перевод строки, символ с кодом 0x10. Поэтому сам по себе бекслеш не означает бекслеш. Для ввода бекслеша нужно использовать \\. Вы можете проверить длину строки "\\\\", она равна 2. (Проверка: http://ideone.com/DhxHe8) Это, кстати, возможно, и есть причина странного поведения редактора по отношению к двойному бекслешу.Ответ 2
Напишите так: s.replace(i, 1, "\\\\");Ответ 3
Или так: s.replace(i, 1, R"(\)");
Комментариев нет:
Отправить комментарий