Использование одной команды cout для печати нескольких строк с размещением каждой строки в отдельной строке (текстовый редактор) - PullRequest
1 голос
/ 22 апреля 2020

Взгляните на следующий пример:

cout << "option 1: \n option 2: \n option 3";

Я знаю, это не лучший способ вывести строку, но вопрос в том, почему это вызывает ошибку, говоря что "символ отсутствует? Есть одна строка, которая должна go для стандартного вывода, но она просто состоит из множества пробельных символов.

Как насчет этого:

string x=" string_test";

Можно интерпретировать эту строку как: "\ nxxxxxxxxxxxxstring_test", где x - это символ пробела.

Это соглашение?

1 Ответ

3 голосов
/ 22 апреля 2020

Это называется multiline string literal.

Вам нужно выйти из встроенного перевода строки. В противном случае он не скомпилируется:

std::cout << "Hello world \
         and stackoverflow";

Примечание: Обратная косая черта должна выполняться непосредственно перед концом строки, поскольку им необходимо экранировать символ новой строки в источнике.

Также вы можете использовать забавный факт "Adjacent string literals are concatenated by the compiler" для вашего преимущества:

std::cout << "Hello World"
"Stack overflow";

См. это для raw string literals. В C ++ 11 у нас есть raw string literals. Они вроде как here-text .

Синтаксис:

prefix(optional) R"delimiter( raw_characters )delimiter"    

Он допускает любую последовательность символов, за исключением того, что она не должна содержать закрывающую последовательность )delimiter". Он используется, чтобы избежать побега любого персонажа. Все, что находится между разделителями, становится частью строки.

const char* s1 = R"foo(
    Hello
    World
    )foo";

Пример взят из cppreference .

...