2009-08-28 4 views
4

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 

는 헤더처럼 상관없이 동일하게 유지하지 메뉴 또는 텍스트에 사용 할 수 있습니다. 그러나 할 필요없이 : 문자

<?php 

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

?> 
+0

감사합니다. 이것은 나를 미치게했습니다. 이제는 어떻게 호출되는지 알았습니다. 실험을하고 있었으므로 주로 VB.net을 찾고 있었지만 슬프게도 거기에 없으며 문자열 작성기를 쓰는 것은 고통 스럽습니다. 나를 위해 그것을 할 작은 prog을해야했다. 그들이 그렇게하도록 허락 해줬으면합니다. – ThorDivDev

답변

4

그것은 PHP에서 HEREDOC 구문라고?

+13

그는 C++ 코드를 찾고 있지 않습니까? –

+3

PHP 답변이 받아 들여지지 않습니다. IT는 C++ 버전을 요구했습니다. – Nizzy

1

여러 줄 문자열 :

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

이것은 OP가 찾고있는 것과 유사합니다. 그래도 개행 문자를 넣을 수는 없다고 생각합니다. –

+0

@sheepsimulator 사용자는 이스케이프 처리하거나 각 행을 개별적으로 인용해야합니다. "multiline string literal C++"에 대한 인터넷 검색은 몇 가지 예를 제시합니다. – Drakonite

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에서 :

PHP의 히어 닥 문법에 직접 해당합니다
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); 

:

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'이 필요합니다.

+0

PHP에서 <<< LABEL은 C++처럼 보이지 않지만 완전히 관련이 없습니다. <<< LABEL은 그냥 재미있는 문자열 인용구입니다. << 연산자입니다. 나는 평범한 '문자열 따옴표를 사용하여 35 년 이상 프로그램을 작성 했으므로 PHP의 HEREDOC 리터럴은 쓸모없는 구문의 단 하나의 여분의 비트로 보인다. –

+0

나는 그 차이점을 아주 잘 알고있다. 그리고 HEREDOC은 큰 따옴표가 붙은 문자열과 비슷하지만 미리 서식이 지정된 텍스트를 사용하는 것보다 조금 더 재미있는 문자열 인용 부호입니다. 매우 긴 문자열이나 많은 출력을 생성하는 상황에서 매우 유용합니다. (스마트 편집자는 HEREDOC 구문을 인식 할 수 있습니다. 예를 들어 <<< SQL 또는 <<< HTML을 사용하면 편집기에서 적절한 구문 강조를 수행 할 수 있습니다.) 중복되거나 쓸모가 없습니다. 또한 C++에서 내가 보여준 구문이 printf() 또는 다른 것들에도 똑같이 잘 작동한다는 것을 지적하고자합니다. – greyfade

+3

C++에서 C 로의 동등 함이 잘못되었습니다.'endl'은 개행 문자를 출력하고 스트림을 플러시합니다. C 코드는 개행을 인쇄하거나 스트림을 플러시하지 않습니다. 그것은'printf ("\ n"); fflush (stdout); ' – GManNickG

1

Windows에서는 긴 텍스트를 리소스 또는 파일로 저장합니다.

국제화 (I18) 라이브러리를 사용하여 Unixish에 저장할 수 있습니다. 프로그램에서 문자열을 printf(_("_xmenu_ %d, %d, %d"), 1, 2, 3)과 같이 쓰면 좋은 해킹이 가능합니다. 그런 다음 _xmenu_을 영어로 번역하거나 다른 언어를 지원할 수 있습니다. 번역본은 다른 파일에 저장되므로 언제든지 볼 필요가 없으며 다시 컴파일하지 않고도 쉽게 변환 할 수 있습니다.

+0

이 특별한 경우에는 나 자신을위한 실험이기 때문에 다른 파일에 저장할 필요가 없지만 사용자가 UI 항목을 변경하는 것을 좋아하기 때문에 정적 방법을 저장하는 데 외부 수단을 사용하는 것이 가장 좋습니다. – ThorDivDev

관련 문제