SORU
19 Mayıs 2011, PERŞEMBE


Arada iki dize hazır

Programlama yeni ve ben çok, ve Koenig tarafından Hızlandırılmış C okuyorum. Neyse, ben öğrenme hakkında dizeleri şöyle yazıyor: "yeni bir fikri olan var mı bağlamak için bir dize ve bir dize ya da, aslında, iki dizeleri (ama iki dize hazır).

Peki, bu kadar anlamsız değil. İki ayrı egzersizleri bu görevi aydınlatmak üzerine .

Aşağıdaki tanımlar geçerlidir?

const string hello = "Hello";

const string message = hello   ",world"   "!";

Şimdi, yukarıdaki çalıştırmak için denedim ve işe yaradı! Çok mutluydum.

O zaman bir sonraki egzersiz yapmaya çalıştım;

const string exclam = "!";

const string message = "Hello"   ",world"   exclam;

Bu işe yaramadı. Şimdi anlıyorum ilgisi ile gerçeğini değiştiremezsiniz arada iki dize hazır, ama anlamıyorum, anlam arasındaki fark neden kaçmayı başarabildim ilk örnek çalışma (değil "dünya" ve "!" iki dize hazır mı? Bu işe yaradı değil mi?) gerekmez mi ama ikincisini değil.

Teşekkür ederim!

CEVAP
19 Mayıs 2011, PERŞEMBE


const string message = "Hello"   ",world"   exclam;

operatörü sağdan sola doğru birleşim, eşdeğer bir programlama dilinde * sembolü ifadesidir:

const string message = (("Hello"   ",world")   exclam);

İki dize hazır "Hello" ",world" "" ilk, dolayısıyla hata. eklenir gördüğünüz gibi

İlk iki dize birleştirilmiş bir std::string bir nesne olması gerekir:

const string message = string("Hello")   ",world"   exclam;

Alternatif olarak, ikinci ilk değerlendirilecek bir ifadeyi bir parçası parenthesizing tarafından zorlayabilir:

const string message = "Hello"   (",world"   exclam);

İlk örnek (hello ",world" "!") std::string (**20) en soldaki bağımsız biri çalışır, çünkü bu mantıklı. değerlendirilen, sonuç art arda eklenmiş dize ile std::string bir nesnedir ve o std::string sonuç "!" ile birleştirilmiş.


Olarak içinnedenyapamazsın arada iki dize hazır bilgi kullanarak , çünkü bir dize sadece bir dizi karakteri (const char [N] N uzunluğu dize artı bir, null terminator). En bağlamlarda bir dizi kullandığınızda, ilk öğe için bir işaretçi dönüştürülür.

Ne yapmaya çalışıyoruz? "Hello" ",world", ne sen gerçekten yapmaya çalıştığı Ekle iki const char*s birlikte olan değil mümkün (ne olur yani Ekle iki işaretçiler birlikte?) ve eğer olsaydı, yapmak istediğin şeyi yapmak değil.


Unutmayınolabilironları yan yana koyarak dize hazır bağlamak; örneğin, aşağıdaki iki eşdeğer

"Hello" ",world"
"Hello,world"

Bu uzun bir dize birden çok satıra bölmek istediğiniz hazır bilgi varsa yararlıdır. Dize hazır olmak zorunda, ama bu const char* işaretçiler const char[N] diziler işe yaramaz.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • hoorahjencar

    hoorahjencar

    6 HAZİRAN 2007
  • Kamikazeepanda

    Kamikazeepan

    5 ŞUBAT 2006
  • Roger Huffman

    Roger Huffma

    4 ŞUBAT 2007