MFC - สตริง
Stringsคือวัตถุที่แสดงลำดับของอักขระ สตริงอักขระสไตล์ C เกิดขึ้นภายในภาษา C และยังคงได้รับการสนับสนุนภายใน C ++
สตริงนี้เป็นอาร์เรย์หนึ่งมิติของอักขระซึ่งถูกยุติโดยอักขระว่าง '\ 0'
สตริงที่สิ้นสุดด้วย null มีอักขระที่ประกอบด้วยสตริงตามด้วย null
นี่คือตัวอย่างง่ายๆของอาร์เรย์อักขระ
char word[12] = { 'H', 'e', 'l', 'l', 'o', ' ', 'W', 'o', 'r', 'l', 'd', '\0' };
ต่อไปนี้เป็นอีกวิธีหนึ่งในการแสดง
char word[] = "Hello, World";
ไลบรารี Microsoft Foundation Class (MFC) มีคลาสสำหรับจัดการสตริงที่เรียกว่า CString. ต่อไปนี้เป็นคุณสมบัติที่สำคัญบางประการของ CString
CString ไม่มีคลาสพื้นฐาน
ออบเจ็กต์ CString ประกอบด้วยลำดับความยาวตัวแปรของอักขระ
CString จัดเตรียมฟังก์ชันและตัวดำเนินการโดยใช้ไวยากรณ์ที่คล้ายกับ Basic
ตัวดำเนินการเชื่อมต่อและเปรียบเทียบร่วมกับการจัดการหน่วยความจำที่เรียบง่ายทำให้วัตถุ CString ใช้งานได้ง่ายกว่าอาร์เรย์อักขระธรรมดา
นี่คือตัวสร้างของ CString
ซีเนียร์ | วิธีการและคำอธิบาย |
---|---|
1 | CString สร้างวัตถุ CString ในรูปแบบต่างๆ |
นี่คือรายการของ Array Methods -
ซีเนียร์ | วิธีการและคำอธิบาย |
---|---|
1 | GetLength ส่งคืนจำนวนอักขระในวัตถุ CString |
2 | IsEmpty ทดสอบว่าวัตถุ CString ไม่มีอักขระหรือไม่ |
3 | Empty บังคับให้สตริงมีความยาว 0 |
4 | GetAt ส่งกลับอักขระในตำแหน่งที่ระบุ |
5 | SetAt ตั้งค่าอักขระในตำแหน่งที่ระบุ |
นี่คือรายการวิธีการเปรียบเทียบ -
ซีเนียร์ | วิธีการและคำอธิบาย |
---|---|
1 | Compare เปรียบเทียบสองสตริง (พิจารณาตัวพิมพ์เล็กและใหญ่) |
2 | CompareNoCase เปรียบเทียบสองสตริง (ไม่คำนึงถึงตัวพิมพ์เล็กและใหญ่) |
นี่คือรายการวิธีการสกัด -
ซีเนียร์ | วิธีการและคำอธิบาย |
---|---|
1 | Mid แยกส่วนตรงกลางของสตริง (เช่นฟังก์ชัน Basic MID $) |
2 | Left แยกส่วนด้านซ้ายของสตริง (เช่นฟังก์ชัน Basic LEFT $) |
3 | Right แยกส่วนด้านขวาของสตริง (เช่นฟังก์ชัน Basic RIGHT $) |
4 | SpanIncluding แยกอักขระจากสตริงซึ่งอยู่ในชุดอักขระที่กำหนด |
5 | SpanExcluding แยกอักขระจากสตริงที่ไม่อยู่ในชุดอักขระที่กำหนด |
นี่คือรายการวิธีการแปลง
ซีเนียร์ | วิธีการและคำอธิบาย |
---|---|
1 | MakeUpper แปลงอักขระทั้งหมดในสตริงนี้เป็นอักขระตัวพิมพ์ใหญ่ |
2 | MakeLower แปลงอักขระทั้งหมดในสตริงนี้เป็นอักขระตัวพิมพ์เล็ก |
3 | MakeReverse กลับอักขระในสตริงนี้ |
4 | Format จัดรูปแบบสตริงตามที่ sprintf ทำ |
5 | TrimLeft ตัดอักขระช่องว่างนำหน้าจากสตริง |
6 | TrimRight ตัดต่ออักขระเว้นวรรคสีขาวจากสตริง |
นี่คือรายการวิธีการค้นหา
ซีเนียร์ | วิธีการและคำอธิบาย |
---|---|
1 | Find ค้นหาอักขระหรือสตริงย่อยภายในสตริงที่ใหญ่กว่า |
2 | ReverseFind ค้นหาอักขระภายในสตริงที่ใหญ่กว่า เริ่มจากจุดสิ้นสุด |
3 | FindOneOf ค้นหาอักขระที่ตรงกันตัวแรกจากชุด |
นี่คือรายการวิธีการเข้าถึงบัฟเฟอร์
ซีเนียร์ | วิธีการและคำอธิบาย |
---|---|
1 | GetBuffer ส่งกลับตัวชี้ไปยังอักขระใน CString |
2 | GetBufferSetLength ส่งกลับตัวชี้ไปยังอักขระใน CString โดยตัดทอนเป็นความยาวที่ระบุ |
3 | ReleaseBuffer เผยแพร่การควบคุมบัฟเฟอร์ที่ส่งคืนโดย GetBuffer |
4 | FreeExtra ลบโอเวอร์เฮดของอ็อบเจ็กต์สตริงนี้โดยการเพิ่มหน่วยความจำเพิ่มเติมที่จัดสรรไว้ก่อนหน้านี้ให้กับสตริง |
5 | LockBuffer ปิดใช้งานการนับการอ้างอิงและป้องกันสตริงในบัฟเฟอร์ |
6 | UnlockBuffer เปิดใช้งานการนับการอ้างอิงและเผยแพร่สตริงในบัฟเฟอร์ |
นี่คือรายการวิธีการเฉพาะของ Windows
ซีเนียร์ | วิธีการและคำอธิบาย |
---|---|
1 | AllocSysString จัดสรร BSTR จากข้อมูล CString |
2 | SetSysString ตั้งค่าวัตถุ BSTR ที่มีอยู่ด้วยข้อมูลจากออบเจ็กต์ CString |
3 | LoadString โหลดวัตถุ CString ที่มีอยู่จากทรัพยากร Windows CE |
ต่อไปนี้คือการดำเนินการต่างๆบนวัตถุ CString -
สร้างสตริง
คุณสามารถสร้างสตริงโดยใช้สตริงลิเทอรัลหรือสร้างอินสแตนซ์ของคลาส 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
}
เมื่อโค้ดด้านบนถูกคอมไพล์และดำเนินการคุณจะเห็นผลลัพธ์ต่อไปนี้
สตริงว่าง
คุณสามารถสร้างสตริงว่างโดยใช้ลิเทอรัลสตริงว่างหรือโดยใช้เมธอด CString :: Empty () คุณยังสามารถตรวจสอบว่าสตริงว่างหรือไม่โดยใช้คุณสมบัติบูลีน 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
}
เมื่อโค้ดด้านบนถูกคอมไพล์และดำเนินการคุณจะเห็นผลลัพธ์ต่อไปนี้
การต่อสตริง
ในการเชื่อมต่อสตริงตั้งแต่สองสตริงขึ้นไปคุณสามารถใช้ตัวดำเนินการ + เพื่อเชื่อมสองสตริงหรือวิธี 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
}
เมื่อโค้ดด้านบนถูกคอมไพล์และดำเนินการคุณจะเห็นผลลัพธ์ต่อไปนี้
ความยาวสตริง
ในการค้นหาความยาวของสตริงคุณสามารถใช้เมธอด CString :: GetLength () ซึ่งจะส่งคืนจำนวนอักขระในออบเจ็กต์ 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
}
เมื่อโค้ดด้านบนถูกคอมไพล์และดำเนินการคุณจะเห็นผลลัพธ์ต่อไปนี้
การเปรียบเทียบสตริง
ในการเปรียบเทียบตัวแปรสตริงสองตัวคุณสามารถใช้ตัวดำเนินการ ==
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
}
เมื่อโค้ดด้านบนถูกคอมไพล์และดำเนินการคุณจะเห็นผลลัพธ์ต่อไปนี้