Aracılığıyla paylaş


Dize (C++ Bileşen Uzantıları)

Visual C++ Derleyici destekler dizeleri, olan metin karakter dizisi temsil eden nesneler.Visual C++ örtülü değeri, dize değişkenleri ve rakamları, açık bir alıntı dize değeri olan destekler.

Tüm çalışma zamanlarının

Windows çalışma zamanı ve ortak dil çalışma zamanı dizeleri ayrılmış olan belleği otomatik olarak yönetilen nesneleri temsil eder.Yani, açıkça kapsam dışında dize değişkeni gider veya uygulama sona erdiğinde bir dize için bellek atmak için gerekli değildir.String nesnesi yaşam otomatik olarak yönetilen olduğunu belirtmek için dize türü ile bildirmek tanıtıcı nesnesi (^) değiştirici.

Windows çalışma zamanı

Windows çalışma zamanı mimarisi uygulamak Visual C++ gerektirir String veri türü olarak Platform ad.Size kolaylık sağlamak için de Visual C++ sağlar string veri türü olan bir eşanlamlı Platform::String, default ad.

ms177218.collapse_all(tr-tr,VS.110).gifSözdizimi

// compile with /ZW
using namespace Platform;
using namespace default;
   Platform::String^ MyString1 = "The quick brown fox";
   String^ MyString2 = "jumped over the lazy dog.";
   String^ MyString3 = "Hello, world!";

ms177218.collapse_all(tr-tr,VS.110).gifNotlar

Daha fazla bilgi ve dizeleri hakkında örnekler için bkz:Platform::String, std::wstring ve harfleri (Platform)

ms177218.collapse_all(tr-tr,VS.110).gifGereksinimler

Derleyici seçeneği:/ZW

Ortak dil çalışma zamanı

Bu konuda Visual C++ derleyicisi kullanarak çalıştırdığınızda, dize hazır bilgileri nasıl işlediğini anlatır /clr derleyici seçeneği.Kullanmak için /clr, ortak dil çalışma zamanı (clr) c + kullanmanız gerekir +/ CLI sözdizimi ve yönetilen nesneler./clr hakkında daha fazla bilgi için, bkz. /CLR (ortak dil çalışma zamanı derleme).

İle derlerken /clr, derleyici dizelerini türü dizeleri dönüştürmek String.Varolan kodu ile geriye dönük uyumluluk korumak için bunun iki istisnası vardır:

  • Özel durum işleme.Dize değişmezi Yakalandığında, derleyici bir dize literal yakalar.

  • Şablon kesintisi.Şablon değişkeni bir dize geçirildiğinde, derleyici dönüştürebilir değil bir String.Not genel bağımsız değişken olarak geçirilen dize hazır bilgileri yükseltilmesi için String.

Derleyici de davranışlarını özelleştirmek için kılabilirsiniz üç iþleç için yerleşik destek vardır:

  • System::String ^ operator + (System::String, System::String);

  • System::String ^ operator + (System::Object, System::String);

  • System::String ^ operator + (System::String, System::Object);

Geçirilen zaman bir String, derleyici, gerekirse kutusunu tıklatın ve sonra nesne (ToString) dizesi ile bir arada.

İle derlerken /clr:oldSyntax, dize hazır değil dönüştürülür String.

[!NOT]

Şapka ("^") bildirilen değişken c + tanıtıcısını gösterir +/ CLI nesne yönetilen.

Daha fazla bilgi için bkz. C++ dize hazır bilgileri.

ms177218.collapse_all(tr-tr,VS.110).gifGereksinimler

Derleyici seçeneği:/clr

ms177218.collapse_all(tr-tr,VS.110).gifÖrnekler

Örnek

Aşağıdaki kod örneği, bitiştirme ve dizeleri karşılaştırma gösterilmiştir.

// string_operators.cpp
// compile with: /clr
// In the following code, the caret ("^") indicates that the 
// declared variable is a handle to a C++/CLI managed object.
using namespace System;

int main() {
   String ^ a = gcnew String("abc");
   String ^ b = "def";   // same as gcnew form
   Object ^ c = gcnew String("ghi");

   char d[100] = "abc";

   // variables of System::String returning a System::String
   Console::WriteLine(a + b);
   Console::WriteLine(a + c);
   Console::WriteLine(c + a);

   // accessing a character in the string
   Console::WriteLine(a[2]);

   // concatenation of three System::Strings
   Console::WriteLine(a + b + c);

   // concatenation of a System::String and string literal
   Console::WriteLine(a + "zzz");

   // you can append to a System::String ^
   Console::WriteLine(a + 1);
   Console::WriteLine(a + 'a');
   Console::WriteLine(a + 3.1);

   // test System::String ^ for equality
   a += b;
   Console::WriteLine(a);
   a = b;
   if (a == b)
      Console::WriteLine("a and b are equal");

   a = "abc";
   if (a != b)
      Console::WriteLine("a and b are not equal");

   // System:String ^ and tracking reference
   String^% rstr1 = a;
   Console::WriteLine(rstr1);

   // testing an empty System::String ^
   String ^ n;
   if (n == nullptr)
      Console::WriteLine("n is empty");
}

Çıktı

  
  
  
  
  
  
  
  
  
  
  
  
  
  

Örnek

Aşağıdaki örnek, derleyici tarafından sağlanan işleç aşırı ve derleyici temel işlevi aşırı bulacaksınız göstermektedir String türü.

// string_operators_2.cpp
// compile with: /clr
using namespace System;

// a string^ overload will be favored when calling with a String
void Test_Overload(const char * a) { 
   Console::WriteLine("const char * a"); 
}
void Test_Overload(String ^ a) { 
   Console::WriteLine("String ^ a"); 
}

// overload will be called instead of compiler defined operator
String ^ operator +(String ^ a, String ^ b) {
   return ("overloaded +(String ^ a, String ^ b)");
}

// overload will be called instead of compiler defined operator
String ^ operator +(Object ^ a, String ^ b) {
   return ("overloaded +(Object ^ a, String ^ b)");
}

// overload will be called instead of compiler defined operator
String ^ operator +(String ^ a, Object ^ b) {
   return ("overloaded +(String ^ a, Object ^ b)");
}

int main() {
   String ^ a = gcnew String("abc");
   String ^ b = "def";   // same as gcnew form
   Object ^ c = gcnew String("ghi");

   char d[100] = "abc";

   Console::WriteLine(a + b);
   Console::WriteLine(a + c);
   Console::WriteLine(c + a);

   Test_Overload("hello");
   Test_Overload(d);
}

Çıktı

  
  
  
  
  

Örnek

Derleyici arasında doğal dizeleri ayıran aşağıdaki örnek gösterir ve String dizeleri.

// string_operators_3.cpp
// compile with: /clr
using namespace System;
int func() {
   throw "simple string";   // const char *
};

int func2() {
   throw "string" + "string";   // returns System::String
};

template<typename T>
void func3(T t) {
   Console::WriteLine(T::typeid);
}

int main() {
   try {
      func();
   }
   catch(char * e) {
      Console::WriteLine("char *");
   }

   try {
      func2();
   }
   catch(String^ str) {
      Console::WriteLine("String^ str");
   }

   func3("string");   // const char *
   func3("string" + "string");   // returns System::String
}

Çıktı

  
  
  
  

Ayrıca bkz.

Başvuru

C++ dize hazır bilgileri

/CLR (ortak dil çalışma zamanı derleme)

Kavramlar

Çalışma platformları için bileşen uzantıları