Aracılığıyla paylaş


C++ dize hazır bilgileri

Çift tırnak işaretleri içinde kaynak karakter kümesinden sıfır veya daha çok karakterden oluşan bir dize oluşur (").Dize değişmezi çekildiği o, birlikte, form boş sonlandırılmış dize karakter dizisini temsil eder.

Dize hazır bilgileri, çift tırnak işareti (''), ters eğik çizgi dışındaki kaynak karakter kümesinden herhangi bir grafik karakter içerebilir (\), ya da yeni satır karakteri.Açıklanan aynı çıkış dizileri içerebilir C++ karakter sabitler.

C++ dizeler bu türleri vardır:

  • Dizi charn, nerede n dize (karakter) sonlandırma için 1 artı uzunluğunda '\0**'** , dizenin sonuna işaretler

  • Dizi wchar_t, geniş karakter dizeleri

Dize sabiti değiştirme tanımsız sonucudur.Örne?in:

char *szStr = "1234";
szStr[2] = 'A';      // Results undefined

Microsoft özel

Bazı durumlarda, aynı harflerden "yürütülebilir dosyada yer kazanmak için havuza".Dize hazır bilgi havuzu ayrı bir hazır bilgi dizesi örneği tüm başvurular bir belirli dize bellekteki her başvuru yerine aynı konuma işaret etmek için derleyici nedenleri üzerine gelin./gf dize havuzu sağlar.

SON Microsoft özel

Dize hazır bilgileri belirtirken, bitişik dizeleri birleşir.Bu nedenle, bu bildirim:

char szStr[] = "12" "34";

Bu bildirim için aynıdır:

char szStr[] = "1234";

Bu bitişik dizeleri bitiştirme uzun dizeleri birden çok satırda belirttiğiniz kolaylaştırır:

cout << "Four score and seven years "
        "ago, our forefathers brought forth "
        "upon this continent a new nation.";

Yukarıdaki örnekte, tüm dize Four score and seven years ago, our forefathers brought forth upon this continent a new nation. birlikte spliced.Bu dize satırını şu şekilde splicing kullanılarak da belirtilebilir:

cout << "Four score and seven years \
ago, our forefathers brought forth \
upon this continent a new nation.";

Birleştirilmiş tüm bitişik dize sabiti, null karakter, '\0', c dize işleme işlevleri için bir dize sonu işaretçisi sağlamak için eklenir.

Birinci dizeyi kaçış karakterini içerdiğinde, dize bitiştirme de şaşırtıcı sonuçlar ortaya çıkabilir.Aşağıdaki iki bildirimleri göz önünde bulundurun:

char szStr1[] = "\01" "23";
char szStr2[] = "\0123";

İstediğinizi düşünelim doğal olmasına rağmen szStr1 ve szStr2 aynı değerlere sahip gerçekten içerdikleri değerler aşağıdaki şekilde gösterilmiştir.

Çıkar ve dize bitiştirme

Kaçışlar ve dize birleştirme

Microsoft özel

Bir düz dize uzunluğunun 16.384 (16 k) bayttır.Bu sınır türü dizelere uygular char [ ve wchar_t [.Dize değişmezi çift tırnak içine alınmış parçaların oluşuyorsa, Önişlemci bölümlerini tek bir dize halinde birleştirir ve birleştirilmiş her satır için toplam bayt sayısı fazladan bir bayt ekler.

Örneğin, bir dize olan 40 satır satır (2.000 karakter) başına 50 karakterden oluşur ve 7 karakter içeren tek bir satır ve her satırı çift tırnak işaretleriyle çevrelenmiş varsayalım.Bu kadar 2.007 bayt artı Sonlandırıcı boş karakter 2,008 bayt toplam için bir bayt ekler.Art arda ekleme, fazladan karakter toplam bayt sayısı satırlarının her birindeki ilk 40 için eklenir.Bu, 2.048 bayt toplam yapar.(Ek karakterler son dizenin yazılmadı.) Ancak, çift tırnak işareti satır continuations (\) kullandıysanız, Önişlemci her satır için fazladan bir karakteri eklemez unutmayın.

SON Microsoft özel

Karakter sayımı ve sonlandırma için 1 ekleyerek dize nesnelerinin boyutunu belirlemek '\0' veya türü için 2 wchar_t.

Çünkü çift tırnak işareti (") kapsayan dizeler, çıkış sırasını kullanmak (\") temsil etmek için çift tırnak işareti içine alınmalıdır.Tek tırnak işareti (') bir kaçış dizisi temsil edilebilir.Ters eğik çizgi karakteri (\) bir satırın sonunda yerleştirildiğinde bir satır devam ettirme karakteridir.Eğik çizgi karakteri dizesi içinde görüntülenmesini istiyorsanız, iki ters eğik çizgi yazın (\\).(Bkz: Çeviri aşamaları , Önişlemci başvuru satır devam ettirmeyi hakkında daha fazla bilgi.)

Tür geniş karakter dizesi belirtmek için (wchar_t [), karakter ile açılış çift tırnak işareti koyun m.Örne?in:

wchar_t wszStr[] = L"1a1g";

Listelenen tüm normal çıkış kodları Karakter sabitler dize sabitleri geçerlidir.Örne?in:

cout << "First line\nSecond line";
cout << "Error! Take corrective action\a";

Onaltılı rakam olmayan ilk karakteri kaçış kodu sonlandıran çünkü katıştırılmış onaltılık çıkış kodları içeren dize sabitleri tayini beklenmedik sonuçlara neden olabilir.Aşağıdaki örnek bir dize hazır bilgi içeren ASCII karakterleriyle izleyen 5, oluşturma amacı five:

"\x05five"

Gerçek sonucudur karakterleriyle bir çizgiyle ASCII kodu bir onaltılı 5F ive.Aşağıdaki örnek istenen sonuçları verir:

"\005five"     // Use octal constant.
"\x05" "five"  // Use string splicing.

Ayrıca bkz.

Başvuru

C++ değişmezleri