Решение задачи
Задача очень похожа на программу Hello world. Отличие в том, что здесь надо напечатать несколько строк текста. Сам символ перевода строки не может содержаться в обычных строковых литералах, поэтому в программе его придётся заменить на \n. Можно просто вывести каждую строчку отдельно:
#include <iostream>
int main() {
std::cout << "C++ is a general-purpose programming language with a bias towards systems programming that\n";
std::cout << " - is a better C\n";
std::cout << " - supports data abstraction\n";
std::cout << " - supports object-oriented programming\n";
std::cout << " - supports generic programming.\n";
}
Однако писать каждый раз std::cout утомительно. В конструкции std::cout поддерживается вывод нескольких величин сразу. Можно оставить только самый первый std::cout, а остальные строки вывести через <<:
#include <iostream>
int main() {
std::cout << "C++ is a general-purpose programming language with a bias towards systems programming that\n"
<< " - is a better C\n"
<< " - supports data abstraction\n"
<< " - supports object-oriented programming\n"
<< " - supports generic programming.\n";
}
Здесь мы нарочно для лучшей читаемости отформатировали программу так, чтобы символы << стояли друг под другом.
Рассмотрим ещё два способа решить задачу. Строковые константы, расположенные просто друг за другом, автоматически конкатенируются при компиляции программы. Так "Hello," " world!" даст "Hello, world!. Поэтому можно написать так:
#include <iostream>
int main() {
std::cout << "C++ is a general-purpose programming language with a bias towards systems programming that\n"
" - is a better C\n"
" - supports data abstraction\n"
" - supports object-oriented programming\n"
" - supports generic programming.\n";
}
Можно ли избавиться от необходимости писать \n в конце каждой строки? Да, для этого можно воспользоваться raw-литералами. Они могут содержать внутри без экранирования любые символы, в том числе перевод строки, лишь бы они были отличны от выбранных ограничителей. Такие литералы предваряются символом R, а в начале и в конце должна стоять произвольно выбранная одинаковая последовательность символов и круглые скобки. Например, raw(...)raw, или ~~~(...)~~~:
#include <iostream>
int main() {
std::cout <<
R"~~~(C++ is a general-purpose programming language with a bias towards systems programming that
- is a better C
- supports data abstraction
- supports object-oriented programming
- supports generic programming.
)~~~";
}