Двойная косая черта // в путях — можно ли использовать одинарную косую черту?

У меня есть шаблон VS с чем-то вроде

string mypath = "C:\\custom\\file.jpg";

Я хотел бы сделать часть C:\custom\ с параметром подстановки шаблона $userpath$. Есть ли способ избежать использования двойной косой черты?

Что я хотел бы написать:

string mypath = SOMETHING("C:\custom\file.jpg")

который не экранируется с помощью \c и \f и не образует правильный путь. Является ли это возможным?


person Marco A.    schedule 25.06.2013    source источник
comment
Вы можете просмотреть необработанные строковые литералы или просто использовать косую черту, чтобы сделать ее немного более переносимой.   -  person chris    schedule 25.06.2013


Ответы (3)


Для путей вы должны иметь возможность использовать одну косую черту прямой в качестве разделителя:

std::string mypath = "c:/custom/file.jpg";
person David Rodríguez - dribeas    schedule 25.06.2013

Попробуйте необработанный строковый литерал:

string mypath = R"(C:\custom\file.jpg)";
person tckmn    schedule 25.06.2013

Попробуйте привыкнуть к символу двойной обратной косой черты, потому что в С++ все парсеры и компиляторы это понимают. и если ваш шаблон VS \\ двойная обратная косая черта создает \ одинарную обратную косую черту, используйте 4 обратную косую черту \\\\ для правильного создания \\ двойной обратной косой черты.

person arifnpm    schedule 25.06.2013
comment
Это просто не работает. Поскольку я использую одну косую черту, он думает, что я убегаю от следующего символа. Все в порядке, поэтому я использую двойную косую черту, а-а-и… Я получаю двойную косую черту! Не одинарная, а двойная! Просто безумие… - person Hi-Angel; 10.10.2014