2012-09-09 4 views
12

은 내가 printf() 문 사용하여 만든 다음과 같은 출력이 : 출력 그녀는 말했다큰 따옴표를 문자열 리터럴로 가져 오는 방법은 무엇입니까?

그래서

printf("She said time flies like an arrow, but fruit flies like a banana."); 

는하지만, 큰 따옴표의 실제 견적을 넣고 싶다 "시간은처럼 날아 화살,하지만 과일은 바나나처럼 날아간다. "

printf() 문에 문자열 리터럴을 래핑하는 데 사용되는 큰 따옴표를 사용하지 않고.

어떻게하면됩니까?

답변

41
백 슬래시와 따옴표를 탈출

:

printf("She said \"time flies like an arrow, but fruit flies like a banana\"."); 

이 당신이 문자열 리터럴에서 사용할 수있는 특별한 escape characters 있으며, 이들은 선도적 백 슬래시로 표시된다.

0

감사하게도 C++ 11에는 원시 문자열 리터럴을 사용하는 더 기쁜 방법이 있습니다.

printf("She said \"time flies like an arrow, but fruit flies like a banana\"."); 

가되다 :

가 개방 견적 후, 및 닫는 따옴표가 전에 괄호의 추가에 관하여
printf(R"(She said "time flies like an arrow, but fruit flies like a banana".)"); 

, 그들은 최대 16 자까지의 거의 모든 조합이 될 수 있습니다, 피 돕는 문자열 자체에 조합이있는 상황. 구체적 :

제외 설정된 기본 소스 문자의 구성원 : 공간 왼쪽 괄호 (오른쪽 괄호), 백 슬래시 \ 수평 탭, 수직 탭을 나타내는 제어 문자 형태 피드 그것은이 사소한 문장은 논쟁의 여지가있을 수 있습니다 얼마나 명확하고, 줄 바꿈 "(N3936 §2.14.5 [lex.string] 문법)와"최대 16 자 "(§2.14.5/2)

HTML이나 JSON과 같은 형식화 된 문자열에 사용될 때 분명히 명확합니다.

관련 문제