MFC - Chuỗi
Stringslà các đối tượng biểu diễn chuỗi các ký tự. Chuỗi ký tự kiểu C bắt nguồn từ ngôn ngữ C và tiếp tục được hỗ trợ trong C ++.
Chuỗi này thực sự là một mảng một chiều các ký tự được kết thúc bằng một ký tự rỗng '\ 0'.
Chuỗi được kết thúc bằng null chứa các ký tự bao gồm chuỗi theo sau là null.
Đây là ví dụ đơn giản về mảng ký tự.
char word[12] = { 'H', 'e', 'l', 'l', 'o', ' ', 'W', 'o', 'r', 'l', 'd', '\0' };
Sau đây là một cách khác để biểu diễn nó.
char word[] = "Hello, World";
Thư viện Microsoft Foundation Class (MFC) cung cấp một lớp để thao tác với chuỗi được gọi là CString. Sau đây là một số tính năng quan trọng của CString.
CString không có lớp cơ sở.
Đối tượng CString bao gồm một chuỗi ký tự có độ dài thay đổi.
CString cung cấp các hàm và toán tử sử dụng cú pháp tương tự như cú pháp của Basic.
Các toán tử nối và so sánh, cùng với việc quản lý bộ nhớ được đơn giản hóa, làm cho các đối tượng CString dễ sử dụng hơn các mảng ký tự thông thường.
Đây là hàm tạo của CString.
Sr.No. | Phương pháp & Mô tả |
---|---|
1 | CString Xây dựng các đối tượng CString theo nhiều cách khác nhau |
Đây là danh sách các Phương thức Mảng -
Sr.No. | Phương pháp & Mô tả |
---|---|
1 | GetLength Trả về số ký tự trong đối tượng CString. |
2 | IsEmpty Kiểm tra xem một đối tượng CString không chứa ký tự nào. |
3 | Empty Buộc một chuỗi có độ dài bằng 0. |
4 | GetAt Trả về ký tự tại một vị trí được chỉ định. |
5 | SetAt Đặt một ký tự ở một vị trí được chỉ định. |
Đây là danh sách các phương pháp so sánh -
Sr.No. | Phương pháp & Mô tả |
---|---|
1 | Compare So sánh hai chuỗi (phân biệt chữ hoa chữ thường). |
2 | CompareNoCase So sánh hai chuỗi (không phân biệt chữ hoa chữ thường). |
Đây là danh sách các phương pháp trích xuất -
Sr.No. | Phương pháp & Mô tả |
---|---|
1 | Mid Trích xuất phần giữa của một chuỗi (như hàm MID $ cơ bản). |
2 | Left Trích xuất phần bên trái của một chuỗi (như hàm Basic LEFT $). |
3 | Right Trích xuất phần bên phải của một chuỗi (như hàm Basic RIGHT $). |
4 | SpanIncluding Trích xuất các ký tự từ chuỗi nằm trong bộ ký tự đã cho. |
5 | SpanExcluding Trích xuất các ký tự từ chuỗi không có trong bộ ký tự đã cho. |
Đây là danh sách các phương pháp chuyển đổi.
Sr.No. | Phương pháp & Mô tả |
---|---|
1 | MakeUpper Chuyển đổi tất cả các ký tự trong chuỗi này thành các ký tự viết hoa. |
2 | MakeLower Chuyển đổi tất cả các ký tự trong chuỗi này thành các ký tự viết thường. |
3 | MakeReverse Đảo ngược các ký tự trong chuỗi này. |
4 | Format Định dạng chuỗi như sprintf. |
5 | TrimLeft Cắt các ký tự khoảng trắng ở đầu chuỗi. |
6 | TrimRight Cắt các ký tự khoảng trắng theo sau khỏi chuỗi. |
Đây là danh sách các Phương pháp Tìm kiếm.
Sr.No. | Phương pháp & Mô tả |
---|---|
1 | Find Tìm một ký tự hoặc chuỗi con bên trong một chuỗi lớn hơn. |
2 | ReverseFind Tìm một ký tự bên trong một chuỗi lớn hơn; bắt đầu từ cuối. |
3 | FindOneOf Tìm ký tự phù hợp đầu tiên từ một tập hợp. |
Đây là danh sách các Phương pháp Truy cập Bộ đệm.
Sr.No. | Phương pháp & Mô tả |
---|---|
1 | GetBuffer Trả về một con trỏ đến các ký tự trong CString. |
2 | GetBufferSetLength Trả về một con trỏ đến các ký tự trong CString, cắt bớt theo độ dài được chỉ định. |
3 | ReleaseBuffer Giải phóng quyền kiểm soát bộ đệm do GetBuffer trả về |
4 | FreeExtra Loại bỏ bất kỳ chi phí nào của đối tượng chuỗi này bằng cách giải phóng bất kỳ bộ nhớ bổ sung nào đã được cấp phát trước đó cho chuỗi. |
5 | LockBuffer Tắt tính năng đếm tham chiếu và bảo vệ chuỗi trong bộ đệm. |
6 | UnlockBuffer Cho phép đếm tham chiếu và giải phóng chuỗi trong bộ đệm. |
Đây là danh sách các Phương pháp dành riêng cho Windows.
Sr.No. | Phương pháp & Mô tả |
---|---|
1 | AllocSysString Phân bổ BSTR từ dữ liệu CString. |
2 | SetSysString Đặt đối tượng BSTR hiện có với dữ liệu từ đối tượng CString. |
3 | LoadString Tải đối tượng CString hiện có từ tài nguyên Windows CE. |
Sau đây là các hoạt động khác nhau trên các đối tượng CString:
Tạo chuỗi
Bạn có thể tạo một chuỗi bằng cách sử dụng một chuỗi ký tự hoặc tạo một thể hiện của lớp CString.
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
}
Khi đoạn mã trên được biên dịch và thực thi, bạn sẽ thấy kết quả sau.
Chuỗi trống
Bạn có thể tạo một chuỗi trống bằng cách sử dụng một chuỗi rỗng theo nghĩa đen hoặc bằng cách sử dụng phương thức CString :: Empty (). Bạn cũng có thể kiểm tra xem một chuỗi có trống hay không bằng cách sử dụng thuộc tính Boolean isEmpty.
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
}
Khi đoạn mã trên được biên dịch và thực thi, bạn sẽ thấy kết quả sau.
Kết nối chuỗi
Để nối hai hoặc nhiều chuỗi, bạn có thể sử dụng toán tử + để nối hai chuỗi hoặc phương thức CString :: Append ().
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
}
Khi đoạn mã trên được biên dịch và thực thi, bạn sẽ thấy kết quả sau.
Chiều dài chuỗi
Để tìm độ dài của chuỗi, bạn có thể sử dụng phương thức CString :: GetLength (), trả về số ký tự trong một đối tượng CString.
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
}
Khi đoạn mã trên được biên dịch và thực thi, bạn sẽ thấy kết quả sau.
So sánh chuỗi
Để so sánh hai biến chuỗi, bạn có thể sử dụng toán tử ==
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
}
Khi đoạn mã trên được biên dịch và thực thi, bạn sẽ thấy kết quả sau.