当你可以使用<<<<<<<<<<和结束分隔符?

时间:2009-08-28 19:18:39

标签: 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

这可以用于无论标题如何都保持不变的菜单或文本。但不必这样做:

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

4 个答案:

答案 0 :(得分: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;

或者在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);

这直接等同于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;

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

答案 1 :(得分:4)

在PHP中称为HEREDOC语法:

<?php

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

?>

答案 2 :(得分:1)

多行字符串文字?

答案 3 :(得分:1)

在Windows中,您可以将长文本存储为资源或文件。

您可以使用国际化(I18)库将其存储为Unixish。在您的程序中编写字符串(如printf( _("_xmenu_ %d, %d, %d"), 1, 2, 3))是一个很好的黑客,然后您可以将_xmenu_“翻译”成英语,以及您想要支持的任何其他语言。由于翻译存储在另一个文件中,因此您无需一直查看它们,并且无需重新编译即可轻松更改。