sekharsam Ответов: 1

Замените '\' на '\\' из строки в C++


Большое спасибо.. Может ли кто-нибудь помочь мне с этим? Замена символов из строки.

replace '\' with '\\' from a string in c++


Что я уже пробовал:

string replace(string s, char c1, char c2) 
{ 
    int l = s.length(); 
  
    // loop to traverse in the string 
    for (int i = 0; i < l; i++) { 
  
        // check for c1 and replace 
        if (s[i] == c1) 
            s[i] = c2; 
  
        else if (s[i] == c2) 
            s[i] = c1; 
    } 
    return s; 
} 



Но я не могу этого сделать ... пожалуйста, помогите

1 Ответов

Рейтинг:
12

OriginalGriff

Нет, ты не можешь ... " \ "- это не символ ... или это, или " \ " - нет!
В языке C++ обратная косая черта-это специальное значение, escape character - он указывает системе, что это "особое значение", такое как новая строка: '\n', или двойная кавычка:'\"', или одинарная кавычка:'\", или одна из нескольких других. Что оставляет проблему: как вы вводите обратную косую черту? Просто: вы избегаете его: '\\'

Поэтому когда вы пишете строку символов вам нужно использовать escape для специальных символов:

"A backslash: \"\\\"";
является ли строка такой же, если она напечатана:
A backslash: "\"


Поэтому "замена '\' на '\\'" не имеет никакого смысла: если у вас уже есть один символ обратной косой черты в вашей строке, и вы хотите два подлинных символа обратной косой черты, то вы не можете просто заменить символ, потому что значение, которое вы хотите заменить, - это два символа, поэтому вам нужно переместить все символы в iots; прямо над одним, чтобы освободить место!

Остановитесь и подумайте о том, что именно вы пытаетесь сделать, я не думаю, что вы полностью понимаете, что здесь происходит.


sekharsam

Спасибо за ответ Грифф,

На самом деле у меня есть путь к файлу "C:\Program файлы\VPN\config\WVPN.ovpn"

Необходимо выполнить через строку CMD, поэтому нужно заменить '\' на '\\' в пути к файлу.

OriginalGriff

Почему? Они-персонажи. Они уже верны. В противном случае \P вашей строки будет представлять собой один символ (который не распознается), аналогично для \V, \c и \W

Это только компилятор C++ заботится, а не CMD