Обратная косая черта, вызывающая проблемы с ++ - PullRequest
0 голосов
/ 28 декабря 2018

Я пытаюсь использовать обратную косую черту в C ++ в такой строке:

HWND hwnd = FindWindowA(NULL, "C:\Example\App.exe");

Так что для этого примера я получу следующие ошибки / предупреждения: "неизвестная escape-последовательность: '\ E'"msgstr "неизвестная escape-последовательность: '\ A'".Поскольку мне нужно ввести точное имя окна, есть ли способ избежать использования обратной косой черты или помешать компилятору интерпретировать их как «escape-последовательности»?

Ответы [ 4 ]

0 голосов
/ 28 декабря 2018

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

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

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

0 голосов
/ 28 декабря 2018

Вы можете избежать обратной косой черты, удвоив их:

HWND hwnd = FindWindowA(NULL, "C:\\Example\\App.exe");
0 голосов
/ 28 декабря 2018

Вы должны избегать их правильно, C ++ 11 добавил необработанную строку , что облегчает эту вещь:

HWND hwnd = FindWindowA(NULL, R"(C:\Example\App.exe)");

, иначе сделайте это вручную:

HWND hwnd = FindWindowA(NULL, "C:\\Example\\App.exe");
0 голосов
/ 28 декабря 2018

Вы должны избежать этого правильно:

HWND hwnd = FindWindowA(NULL, "C:\\Example\\App.exe");

Для получения полного списка всех escape-последовательностей, проверьте это:

https://en.cppreference.com/w/cpp/language/escape

...