📜  MFC-字符串(1)

📅  最后修改于: 2023-12-03 15:02:56.270000             🧑  作者: Mango

MFC-字符串介绍

MFC(Microsoft Foundation Classes)是一个面向对象的C++类库,它是微软公司开发的一种编程工具,旨在简化 Windows 对话框、控制和消息、GDI、网络、多线程以及其他 Windows 应用程序中常用的复杂代码任务的编写,该类库提供了控件、MessageBox、Menu等一些接口,MFC支持向导式应用程序,它可以方便地实现多文档界面、视图和文档的框架结构。

在MFC中字符串的处理方法相比于C++有所不同。MFC涉及两种类型的字符串:

  • CString
  • MFC字符串集
CString

CString类是MFC字符串类之一。它是MFC的一个常用类,在MFC应用程序中替代了STL的string类,其定义在afx.h头文件中,具有以下特点:

  • 支持Unicode和Multi-byte字符串。
  • 可以使用重载操作符 ++= 来处理字符串。
  • 可以使用LoadString()函数从资源中读取字符串。
  • 可以使用Format函数像printf一样格式化字符串。
  • 转接宏:ATL、OLE Automation、STL,也就是说可以直接转换成这3种表示。

以下是使用CString的示例代码片段:

#include <afx.h>

int main()
{
    CString str(L"Hello,world!");
    CString str1 = _T("A string with TCHAR");
    CString str2("A string with char");
    CString str3 = str2;
    CString str4 = str1 + L" and " + str2 + _T(" mixed");
    str4 += CString(L" and newer with unicode support");
    str4.AppendFormat(_T(" (size: %d bytes)"), str4.GetLength());
    wchar_t buffer[50];
    swprintf(buffer, 50, L"The length is %d characters", str4.GetLength());
    return 0;
}
MFC字符串集

MFC提供了一种类似于C++中STL string字符串的概念:字符串集CSTLR。CSTLR是由CString组成的set,定义在afxstr.h中,通过CSTLR可以方便地去除字符串表中的重复项。以下是使用MFC字符串集的示例代码片段:

#include <afxstr.h>
#include <set>
#include <iostream>

int main()
{
    std::set<CString> stringSet;
    stringSet.insert(_T("String 1"));
    stringSet.insert(_T("String 2"));
    stringSet.insert(_T("String 3"));
    stringSet.insert(_T("String 4"));
    stringSet.insert(_T("String 4")); // Adding duplicate string. It will only add one.
    std::cout << _T("The size of set is: ") << stringSet.size() << std::endl;
    return 0;
}

通过以上介绍,相信你已经对MFC字符串有着更深入的了解了。