MFC - Dizeler
Stringskarakter dizilerini temsil eden nesnelerdir. C-stili karakter dizesi, C dilinden kaynaklanmıştır ve C ++ içinde desteklenmeye devam etmektedir.
Bu dizge aslında bir boş karakter '\ 0' ile sonlandırılan tek boyutlu bir karakter dizisidir.
Boş sonlu bir dize, dizeyi oluşturan karakterleri ve ardından bir boş değeri içerir.
İşte karakter dizisinin basit bir örneği.
char word[12] = { 'H', 'e', 'l', 'l', 'o', ' ', 'W', 'o', 'r', 'l', 'd', '\0' };
Aşağıdaki, onu temsil etmenin başka bir yoludur.
char word[] = "Hello, World";
Microsoft Foundation Class (MFC) kitaplığı, adı verilen dizeyi işlemek için bir sınıf sağlar. CString. Aşağıda CString'in bazı önemli özellikleri verilmiştir.
CString'in temel sınıfı yoktur.
Bir CString nesnesi, değişken uzunlukta bir karakter dizisinden oluşur.
CString, Basic'e benzer bir sözdizimi kullanan işlevler ve işleçler sağlar.
Basitleştirilmiş bellek yönetimi ile birlikte birleştirme ve karşılaştırma işleçleri, CString nesnelerinin sıradan karakter dizilerine göre daha kolay kullanılmasını sağlar.
İşte CString'in kurucusu.
Sr.No. | Yöntem ve Açıklama |
---|---|
1 | CString CString nesnelerini çeşitli şekillerde oluşturur |
İşte Dizi Yöntemlerinin bir listesi -
Sr.No. | Yöntem ve Açıklama |
---|---|
1 | GetLength Bir CString nesnesindeki karakter sayısını döndürür. |
2 | IsEmpty Bir CString nesnesinin karakter içerip içermediğini test eder. |
3 | Empty Bir dizeyi 0 uzunluğa sahip olmaya zorlar. |
4 | GetAt Belirtilen bir konumdaki karakteri döndürür. |
5 | SetAt Belirtilen bir konumda bir karakter belirler. |
İşte Karşılaştırma Yöntemlerinin bir listesi -
Sr.No. | Yöntem ve Açıklama |
---|---|
1 | Compare İki dizeyi karşılaştırır (büyük / küçük harfe duyarlı). |
2 | CompareNoCase İki dizeyi karşılaştırır (büyük / küçük harfe duyarlı değildir). |
İşte Ekstraksiyon Yöntemlerinin bir listesi -
Sr.No. | Yöntem ve Açıklama |
---|---|
1 | Mid Bir dizenin orta kısmını çıkarır (Temel MID $ işlevi gibi). |
2 | Left Bir dizenin sol kısmını çıkarır (Temel LEFT $ işlevi gibi). |
3 | Right Bir dizenin sağ kısmını ayıklar (Basic RIGHT $ işlevi gibi). |
4 | SpanIncluding Verilen karakter kümesindeki karakterleri dizeden ayıklar. |
5 | SpanExcluding Verilen karakter kümesinde olmayan karakterleri dizeden çıkarır. |
İşte Dönüştürme Yöntemlerinin bir listesi.
Sr.No. | Yöntem ve Açıklama |
---|---|
1 | MakeUpper Bu dizedeki tüm karakterleri büyük harfli karakterlere dönüştürür. |
2 | MakeLower Bu dizedeki tüm karakterleri küçük harfli karakterlere dönüştürür. |
3 | MakeReverse Bu dizedeki karakterleri ters çevirir. |
4 | Format Dizeyi sprintf'in yaptığı gibi biçimlendirin. |
5 | TrimLeft Dizeden baştaki beyaz boşluk karakterlerini kırpın. |
6 | TrimRight Dizeden sondaki beyaz boşluk karakterlerini kırpın. |
İşte Arama Yöntemlerinin bir listesi.
Sr.No. | Yöntem ve Açıklama |
---|---|
1 | Find Daha büyük bir dizenin içinde bir karakter veya alt dizeyi bulur. |
2 | ReverseFind Daha büyük bir dizenin içinde bir karakter bulur; sondan başlar. |
3 | FindOneOf Bir kümeden eşleşen ilk karakteri bulur. |
İşte Tampon Erişim Yöntemlerinin bir listesi.
Sr.No. | Yöntem ve Açıklama |
---|---|
1 | GetBuffer CString'deki karakterlere bir işaretçi döndürür. |
2 | GetBufferSetLength CString'deki karakterlere, belirtilen uzunlukta kesilerek bir işaretçi döndürür. |
3 | ReleaseBuffer GetBuffer tarafından döndürülen arabelleğin denetimini serbest bırakır |
4 | FreeExtra Daha önce dizeye ayrılmış fazladan belleği serbest bırakarak bu dizi nesnesinin ek yükünü kaldırır. |
5 | LockBuffer Referans saymayı devre dışı bırakır ve arabellekteki dizeyi korur. |
6 | UnlockBuffer Referans saymayı etkinleştirir ve arabellekteki dizeyi serbest bırakır. |
Windows'a Özgü Yöntemlerin bir listesi aşağıda verilmiştir.
Sr.No. | Yöntem ve Açıklama |
---|---|
1 | AllocSysString CString verilerinden bir BSTR ayırır. |
2 | SetSysString Bir CString nesnesinden gelen verileri içeren mevcut bir BSTR nesnesini ayarlar. |
3 | LoadString Bir Windows CE kaynağından var olan bir CString nesnesini yükler. |
CString nesnelerindeki farklı işlemler aşağıdadır -
Dize Oluştur
Bir dize değişmezi kullanarak veya bir CString sınıfı örneği oluşturarak bir dize oluşturabilirsiniz.
BOOL CMFCStringDemoDlg::OnInitDialog() {
CDialogEx::OnInitDialog();
// Set the icon for this dialog. The framework does this automatically
// when the application's main window is not a dialog
SetIcon(m_hIcon, TRUE); // Set big icon
SetIcon(m_hIcon, FALSE); // Set small icon
CString string1 = _T("This is a string1");
CString string2("This is a string2");
m_strText.Append(string1 + L"\n");
m_strText.Append(string2);
UpdateData(FALSE);
return TRUE; // return TRUE unless you set the focus to a control
}
Yukarıdaki kod derlendiğinde ve çalıştırıldığında, aşağıdaki çıktıyı göreceksiniz.
Boş Dize
Boş bir dize değişmezi kullanarak veya CString :: Empty () yöntemini kullanarak boş bir dize oluşturabilirsiniz. Boolean özelliğini isEmpty kullanarak bir dizenin boş olup olmadığını da kontrol edebilirsiniz.
BOOL CMFCStringDemoDlg::OnInitDialog() {
CDialogEx::OnInitDialog();
// Set the icon for this dialog. The framework does this automatically
// when the application's main window is not a dialog
SetIcon(m_hIcon, TRUE); // Set big icon
SetIcon(m_hIcon, FALSE); // Set small icon
CString string1 = _T("");
CString string2;
string2.Empty();
if(string1.IsEmpty())
m_strText.Append(L"String1 is empty\n");
else
m_strText.Append(string1 + L"\n");
if(string2.IsEmpty())
m_strText.Append(L"String2 is empty");
else
m_strText.Append(string2);
UpdateData(FALSE);
return TRUE; // return TRUE unless you set the focus to a control
}
Yukarıdaki kod derlendiğinde ve çalıştırıldığında aşağıdaki çıktıyı göreceksiniz.
Dize Birleştirme
İki veya daha fazla dizeyi birleştirmek için, iki dizeyi birleştirmek için + operatörünü veya bir CString :: Append () yöntemini kullanabilirsiniz.
BOOL CMFCStringDemoDlg::OnInitDialog() {
CDialogEx::OnInitDialog();
// Set the icon for this dialog. The framework does this automatically
// when the application's main window is not a dialog
SetIcon(m_hIcon, TRUE); // Set big icon
SetIcon(m_hIcon, FALSE); // Set small icon
//To concatenate two CString objects
CString s1 = _T("This "); // Cascading concatenation
s1 += _T("is a ");
CString s2 = _T("test");
CString message = s1;
message.Append(_T("big ") + s2);
// Message contains "This is a big test".
m_strText = L"message: " + message;
UpdateData(FALSE);
return TRUE; // return TRUE unless you set the focus to a control
}
Yukarıdaki kod derlendiğinde ve çalıştırıldığında aşağıdaki çıktıyı göreceksiniz.
IP uzunluğu
Dizenin uzunluğunu bulmak için, bir CString nesnesindeki karakter sayısını döndüren CString :: GetLength () yöntemini kullanabilirsiniz.
BOOL CMFCStringDemoDlg::OnInitDialog() {
CDialogEx::OnInitDialog();
// Set the icon for this dialog. The framework does this automatically
// when the application's main window is not a dialog
SetIcon(m_hIcon, TRUE); // Set big icon
SetIcon(m_hIcon, FALSE); // Set small icon
CString string1 = _T("This is string 1");
int length = string1.GetLength();
CString strLen;
strLen.Format(L"\nString1 contains %d characters", length);
m_strText = string1 + strLen;
UpdateData(FALSE);
return TRUE; // return TRUE unless you set the focus to a control
}
Yukarıdaki kod derlendiğinde ve çalıştırıldığında aşağıdaki çıktıyı göreceksiniz.
Dize Karşılaştırması
İki dize değişkenini karşılaştırmak için == operatörünü kullanabilirsiniz.
BOOL CMFCStringDemoDlg::OnInitDialog() {
CDialogEx::OnInitDialog();
// Set the icon for this dialog. The framework does this automatically
// when the application's main window is not a dialog
SetIcon(m_hIcon, TRUE); // Set big icon
SetIcon(m_hIcon, FALSE); // Set small icon
CString string1 = _T("Hello");
CString string2 = _T("World");
CString string3 = _T("MFC Tutorial");
CString string4 = _T("MFC Tutorial");
if (string1 == string2)
m_strText = "string1 and string1 are same\n";
else
m_strText = "string1 and string1 are not same\n";
if (string3 == string4)
m_strText += "string3 and string4 are same";
else
m_strText += "string3 and string4 are not same";
UpdateData(FALSE);
return TRUE; // return TRUE unless you set the focus to a control
}
Yukarıdaki kod derlendiğinde ve çalıştırıldığında aşağıdaki çıktıyı göreceksiniz.