Передача на символ *, который содержит путь - PullRequest
4 голосов
/ 27 ноября 2010


Я пытаюсь передать через несколько функций строку с путем, но каждый '\\', который я вставляю в путь, становится единственным '\' во внутренней функции, и я не могу использовать этоспособ.
Есть ли способ сохранить "\\" при вводе новой функции?
Я использую C ++ в Windows.
спасибо:)

Ответы [ 2 ]

13 голосов
/ 27 ноября 2010

Будьте готовы к какому-то запутанному ответу.

\ - это escape-символ (вы, возможно, уже встречали escape-последовательность \n, например), а \\ - escape-последовательность, представляющая один \ символ (в некотором смысле быть понятым как побег от побега персонажа). Если вы действительно хотите, чтобы в вашей строке было \\, вам придется использовать \\\\:

std::cout << "\\\\something\\" << std::endl; /* prints "\\something\" */

Просто, чтобы привести другой пример, предположим, что вы хотели бы иметь " в строке. Написание:

const char *str = "Hello "World"";

, очевидно, не скомпилируется, и вам придется бежать с " с \:

const char *str = "Hello \"World\"";
2 голосов
/ 02 января 2011

В C ++ 0x у вас будет необработанный строковый литерал:

R"(anything can appear here, even " or \\ )"

Где все, что между "(и)" является частью строки - экранирование не требуется. В текущем стандарте вы не можете достичь того, что вы хотите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...