首页 > 其他分享 >宽窄字节4:CString的方便之处及优缺点

宽窄字节4:CString的方便之处及优缺点

时间:2025-01-15 15:33:26浏览次数:3  
标签:字节 CString 优缺点 char 宽窄 str wchar

文章目录


前言

宽窄字节4:CString的方便之处及优缺点。


一、CString类的方便之处

CString类归属于ATL,在MFC当中也经常被重点使用。
C语言中经常使用字符串数组和指针进行字符串的操作,但是比较麻烦,例如需要考虑空间是否够用,是否存在溢出等问题。
同时C++STL中的string虽然方便很多,但是想对CString来说还是比较不成熟。

二、使用方式

1.CString类型的一些内置成员函数。

int main()
{
	CString str(_T("123456"));
	str += _T("abc ");
	str.Trim(); // 删除字符串结尾的不显示字符
	str.MakeUpper(); // 转换为大写
	str.MakeLower(); //转换为小写
	CString str_r = str.Right(2); // 返回右侧的两个字符
	str.MakeReverse(); // 反转字符串
	str.MakeReverse();
	CString str_in = str.SpanIncluding(_T("1a35")); // 依次找str的字符中有没有和参数一样的字符,返回一样的字符,直到某个字符找不到为止
	CString str_ex = str.SpanExcluding(_T("1a35")); // 与SpanIncluding相反,找不包含的
	CString strT;
	strT.Format(_T("hello %s%d"), _T("你好"), 123); // 格式化字符串
	strT.Replace('l', '#'); // 替换字符(串)
	strT.Replace(_T("he"), _T("666"));
	str.Compare(_T("333")); // 区分大小写的比较
	return 0;
}

2.CString对于TCHAR的封装

CString内部会根据当前工程的编码方式,自动决定是char* 还是wchar_t* 。实际上CString是一个模板类,有如下三种

typedef CStringT< wchar_t, StrTraitATL< wchar_t > > CAtlStringW;
typedef CStringT< char, StrTraitATL< char > > CAtlStringA;
typedef CStringT< TCHAR, StrTraitATL< TCHAR > > CAtlString;

这里的CAtlString即为CString,微软进行了重命名的定义
在这里插入图片描述CAtlStringW内部使用的是wchar_t* ,CAtlStringA内部使用的是char* ,CAtlString内部使用的是TCHAR* ,所以CString本身会根据当前工程的编码方式,自动决定是char* 还是wchar_t* ,比较方便。

3.CString类对于宽窄字节的转换

当前工程是Unicode宽字节编码的情况下,CString支持从char*类型的窄字节字符串来构造和赋值。因此是可以很方便从窄字节转换为宽字节,反之同样。

char* ppp = (char*)"你还123";
CString w_ppp = ppp;

在这里插入图片描述

wchar_t* w_pp = (wchar_t*)L"你好123";
CString a_ppp = w_pp;

4.CString类的优缺点

优点:
1.使用方便、包含了很多实现好的操作,如trim, reverse, format等
2.无缝兼容MFC
3.自适应当前工程编码,匹配宽窄字节
4.能实现宽窄字节的自动转换工作

缺点:非C++标准,无法跨平台,在除了VC以外的编译器无法使用,更无法在Linux等其他平台上使用。


总结

宽窄字节4:CString的方便之处及优缺点。

标签:字节,CString,优缺点,char,宽窄,str,wchar
From: https://blog.csdn.net/qq_59940419/article/details/145140428

相关文章

  • 百度面试真题 - 大小端字节序问题(联合体/共用体 - 面试加分)
    标题大小端字节序标题大小端字节序(联合体/共用体)优质资源以上bilibili教程(大小端存储-详细简介)(空间也有)目录​编辑简介大小端存储(空间视频详解):强制类型转换- char*:巧用联合体,解决百度面试题 - 大小端字节序问题:使用联合体的优点:简介......
  • 案例分析:子词嵌入从字节编码以保护隐私的技术(SEB)的实际应用
    案例分析:子词嵌入从字节编码以保护隐私的技术(SEB)的实际应用简介:在本文中,我们将深入探讨一个创新且极具前景的技术领域,子词嵌入从字节编码(SubwordEmbeddingsfromByte-Coding,简称SEB)。此技术主要用于文本处理,尤其是在需要保护个人隐私的场合下,它提供了独特的解决方案以提升......
  • 数据结构——链表(概念,类型,java实现、增删、优缺点)
    文章目录链表链表介绍链表类型1.单向链表2.双向链表3.循环链表链表实现(增删改查)链表节点插入节点删除节点链表的特点与优势......
  • IPv4与IPv6有什么优缺点?
    IP是指互联网协议,是传输控制协议/互联网协议套件(TCP/IP)的主要部分。TCP/IP是一套标准和规则,用于规范不同网络上的设备之间打包数据(数据报)的传输和交换。互联网协议管理跨网络边界的数据包寻址、打包/解包和路由效率。要参与数据交换,每个内联网或互联网设备都需要一个唯一的......
  • 大模型详尽盘点:常用模型优缺点、有潜力的新星及国内应用现状分析!
    一、常用的大模型及其优缺点1.百度——文心一言特点与技术:文心一言是百度推出的知识增强型对话语言模型,拥有千亿级参数量,在知识问答、创意生成等任务上表现出色。它具备跨模态、跨语言的深度语义理解与生成能力。优点:能够听懂复杂提示词,胜任代码理解与调试任务,支持图......
  • 主流的液冷技术分类、优缺点与应用场景分析
     ......
  • C++ string转CString
    2024年06月24日在C++中,将 std::string 转换为 CString 可以使用以下几种方法。其中最简单和高效的一种是使用 CString 的构造函数进行直接转换。以下是几种常见的方法:方法一:使用CString的构造函数#include<atlstr.h>//CString需要这个头文件#include<string>......
  • 三、字符型(char, character) --- 一个字节的int型
    概念:用来描述字符的数据类型全称:character语法:charch='a';//'a'是字符常量,代表字母achar表示申请的内存空间的大小ch表示申请的内存空间的名称‘a'存储的是字符a的ASCLL码的二进制,01100001(1)、ASCLL表(以ascll码表数值的方式,存储到内存中):(2)、格......
  • iframe框架都有哪些优缺点?
    iframe框架在前端开发中有着广泛的应用,它提供了一种将外部内容嵌入到页面中的机制。然而,就像任何技术一样,iframe也有其优点和缺点。下面是对iframe框架优缺点的详细分析:优点内容隔离与独立性:iframe可以在页面上独立显示一个页面或者内容,不会与页面其他元素产生冲突。这种隔离性......
  • 清除浮动的方式有哪些及优缺点?
    清除浮动的方式主要有以下几种,每种方式都有其优缺点:使用clear属性:优点:简单易懂,通过在浮动元素后面添加一个元素并为其添加“clear:both;”样式即可清除浮动。缺点:需要在HTML中添加额外的元素,这可能会影响布局和代码的可读性。使用overflow属性:优点:不需要在HTML中添加......