当你用<<<和end-delimiter填充字符串时,它叫什么?

Tho*_*Dev 4 php c++

我知道在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
Run Code Online (Sandbox Code Playgroud)

这可以用于保持相同的菜单或文本,无论标题如何.但不必做:

foobar << "Menu for program X" << endl << "1.Add two numbers" << endl << "2.Substract two numbers"
Run Code Online (Sandbox Code Playgroud)

gre*_*ade 18

C++与PHP的HEREDOC语法没有任何等价物.

但是,您可以在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;
Run Code Online (Sandbox Code Playgroud)

或者在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);
Run Code Online (Sandbox Code Playgroud)

这直接等同于PHP的HEREDOC语法:

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;
Run Code Online (Sandbox Code Playgroud)

C和C++的上述语法被编译器视为一个长字符串,通过将它们拼接在一起.它对字符串文字没有其他影响,因此需要'\n'.

  • 你的C++到C等价是错误的.`endl`将打印换行符,并刷新流.您的C代码既不打印换行符也不刷新流.它需要一个`printf("\n"); fflush(stdout中);` (3认同)