Нужно в строке заменить все символы / на \\. Делал следующим образом:
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)
Это, кстати, возможно, и есть причина странного поведения редактора по отношению к двойному бекслешу.
Комментариев нет:
Отправить комментарий