Как это называется, когда вы можете заполнить строку с помощью <<< и end-delimiter?

Я знаю, что на C ++ и в PHP вы можете заполнить строку или файл жестко закодированным текстом. Если я правильно помню, вот как это должно выглядеть:

var <<< DELIMITER Menu for program X 1.Add two numbers 2.Substract two numbers 3.Multiply two numbers Please pick an option from (0-3); DELIMITER 

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

 foobar << "Menu for program X" << endl << "1.Add two numbers" << endl << "2.Substract two numbers" 

Он называется синтаксисом HEREDOC в PHP:

 <?php $str = <<<EOD Example of string spanning multiple lines using heredoc syntax. EOD; ?> 

C ++ не имеет никакого эквивалента синтаксису HEREDOC от PHP.

Вы можете, однако, сделать это в C ++:

 cout << " Menu for program X\n" " 1.Add two numbers\n" " 2.Substract two numbers\n" " 3.Multiply two numbers\n" " Please pick an option from (0-3);" << endl; 

Или это в C:

 printf( " Menu for program X\n" " 1.Add two numbers\n" " 2.Substract two numbers\n" " 3.Multiply two numbers\n" " Please pick an option from (0-3);\n" ); fflush(stdout); 

Что прямо эквивалентно синтаксису HEREDOC PHP:

 echo <<<EOT Menu for program X 1.Add two numbers 2.Substract two numbers 3.Multiply two numbers Please pick an option from (0-3); EOT; 

Вышеприведенный синтаксис для C и C ++ обрабатывается компилятором как одна длинная строка, сшивая их вместе. Это не имеет никакого другого влияния на строковый литерал, следовательно, требуется «\ n».

Многострочный строковый литерал?

В Windows вы храните длинный текст как ресурс или файл.

Вы можете сохранить его в Unixish, используя библиотеки интернационализации (I18). Хорошая хачка, чтобы написать строку в вашей программе, например printf( _("_xmenu_ %d, %d, %d"), 1, 2, 3) а затем вы можете «перевести» _xmenu_ на английский язык, другие языки, которые вы хотите поддержать. Поскольку переводы хранятся в другом файле, вам не нужно постоянно смотреть на них, и их легко изменить без перекомпиляции.