С++ многострочный строковый исходный литерал
Мы можем определить строку с многострочной:
const char* text1 = "part 1"
"part 2"
"part 3"
"part 4";
const char* text2 = "part 1\
part 2\
part 3\
part 4";
Как насчет с исходным литералом, я пробовал все, никто не работает
std::string text1 = R"part 1"+
R"part 2"+
R"part 3"+
R"part 4";
std::string text2 = R"part 1"
R"part 2"
R"part 3"
R"part 4";
std::string text3 = R"part 1\
part 2\
part 3\
part 4";
std::string text4 = R"part 1
part 2
part 3
part 4";
Ответы
Ответ 1
Обратите внимание, что строковые литералы строки разделены символами R"(
и )"
(или вы можете добавить к разделителю, добавив символы между цитатой и parens, если вам нужна дополнительная "уникальность" ).
#include <iostream>
#include <ostream>
#include <string>
int main ()
{
// raw-string literal example with the literal made up of separate, concatenated literals
std::string s = R"(abc)"
R"( followed by not a newline: \n)"
" which is then followed by a non-raw literal that concatenated \n with"
" an embedded non-raw newline";
std::cout << s << std::endl;
return 0;
}
Ответ 2
Просто напишите его, как хотите:
std::string text = R"(part 1
part 2
part 3
part 4)";
Другая вещь, которую вы не ввели, - это требуемая пара круглых скобок вокруг всей строки.
Также имейте в виду, что все ведущие пробелы на части 2-4 строк, которые вы можете добавить, чтобы сохранить форматированный код, включены, а также ведущую новую строку, чтобы получить часть 1 с другими, так что это делает ее скорее уродливо видеть в коде иногда.
Опция, которая может быть правдоподобной для сохранения вещей в порядке, но все еще используя исходные строковые литералы, заключается в конкатенации строк:
R"(part 1)" "\n"
R"(part 2)" "\n"
R"(part 3)" "\n"
R"(part 4)"