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