2012-09-09 19 views
12

Ben printf() deyimi kullanılarak oluşturulan aşağıdaki çıkışı vardır: çıkış DediBir dize değişmezine çift tırnak nasıl alınır?

yani

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

ama çift tırnak içinde fiili tırnak koymak istiyorum "zaman bir benzeri uçar ok, ama meyve bir muz gibi uçar ". printf() açıklamada edebi dize sarmak için kullanılan çift tırnak müdahale etmeden

.

Bunu nasıl yapabilirim?

cevap

41
ters eğik çizgi ile tırnak kaçış

:

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

Orada dize hazır kullanabileceğiniz özel escape characters, ve bu lider ters eğik çizgi ile gösterilir.

0

Neyse ki, C++ 11 ile ham dize değişmezlerini kullanmanın daha hoş bir yaklaşımı da vardır.

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

Oldu:

açılış alıntı sonra ve kapama tırnağına önce parantez eklenmesiyle ilgili olarak
printf(R"(She said "time flies like an arrow, but fruit flies like a banana".)"); 

, onlar en fazla 16 karakterden hemen hemen her kombinasyonu olabilir unutmayın, engelleyecek kombinasyonun dizenin kendisinde mevcut olduğu durum. Özellikle:

dışında ayarlanmış temel kaynak karakter herhangi bir üyesi: alanı, sol parantez (sağ parantez), eğik çizgi \ ve yatay sekme, dikey sekme temsil kontrol karakterleri, bir şekilde besleme Bu önemsiz cümle tartışmalı olabilir yapar ne kadar net ve yeni satır"(N3936 §2.14.5 [lex.string] gramer) ve "en fazla 16 karakter"(§2.14.5/2)

ancak HTML veya JSON gibi biçimlendirilmiş dizilerde kullanıldığında, sorgulama yapılmadan çok daha nettir.