提供3000多款全球软件/控件产品
针对软件研发的各个阶段提供专业培训与技术咨询
根据客户需求提供定制化的软件开发服务
全球知名设计软件,显著提升设计质量
打造以经营为中心,实现生产过程透明化管理
帮助企业合理产能分配,提高资源利用率
快速打造数字化生产线,实现全流程追溯
生产过程精准追溯,满足企业合规要求
以六西格玛为理论基础,实现产品质量全数字化管理
通过大屏电子看板,实现车间透明化管理
对设备进行全生命周期管理,提高设备综合利用率
实现设备数据的实时采集与监控
利用数字化技术提升油气勘探的效率和成功率
钻井计划优化、实时监控和风险评估
提供业务洞察与决策支持实现数据驱动决策
转帖|使用教程|编辑:鲍佳佳|2021-06-16 09:43:20.010|阅读 199 次
概述:上一节中讲了文档、视图和框架结构中各对象之间的关系,本节主要讲讲在MFC中如何分割窗口。
# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>
上一节讲了分割窗口的有关知识,本节开始讲解MFC的一些常用类,先来说说CString类。在内容开始前为大家介绍一款MFC界面开发控件:
CString类简介
CString类作为MFC的常用类,当之无愧。可以这样说,只要是从事MFC开发,基本都会遇到使用CString类的场合。因为字符串的使用比较普遍,而CString类又提供了对字符串的便捷操作,所以它给MFC开发人员带来了高的开发效率,受到了开发者的欢迎。
大家使用VS2010的话,可能会见到CStringT,实际上它是一个操作可变长度字符串的模板类。CStringT模板类有三个实例:CString、CStringA和CStringW,它们分别提供对TCHAR、char和wchar_t字符类型的字符串的操作。char类型定义的是Ansi字符,wchar_t类型定义的是Unicode字符,而TCHAR取决于MFC工程的属性对话框中的Configuration Properties->General->Character Set属性,如果此属性为Use Multi-Byte Character Set,则TCHAR类型定义的是Ansi字符,而如果为Use Unicode Character Set,则TCHAR类型定义的是Unicode字符。
三个字符串类的操作是一样的,只是处理的字符类型不同。本文以CString类为讲解对象。
CString类的字符串操作
1. CString类的构造函数
CString类有很多构造函数,这里只介绍几个比较常用的:
CString(const CString& stringSrc);
将一个已经存在的CString对象stringSrc的内容拷贝到该CString对象。例如:
C++代码
CString str1(_T("www.jizhuomi.com")); // 将常量字符串拷贝到str1 CString str2(str1); // 将str1的内容拷贝到str2
CString(LPCTSTR lpch, int nLength);
将字符串lpch中的前nLength个字符拷贝到该CString对象。例如:
C++代码
CString str(_T("www.jizhuomi.com"),3); // 构造的字符串对象内容为"www"
CString(TCHAR ch, int nLength = 1);
使用此函数构造的CString对象中将含有nLength个重复的ch字符。例如:
C++代码
CString str(_T('w'),3); // str为"www"
2. CString类的大小写转换及顺序转换函数
CString& MakeLower();
将字符串中的所有大写字符转换为小写字符。
CString& MakeUpper();
将字符串中的所有小写字符转换为大写字符。
CString& MakeReverse();
将字符串中所有字符的顺序颠倒。
例如:
C++代码
CString str(_T("JiZhuoMi")); str.MakeLower(); // str为"jizhuomi" str.MakeUpper(); // str为"JIZHUOMI" str.MakeReverse(); // str为"IMOUHZIJ"
3. CString对象的连接
多个CString对象的连接可以通过重载运算符+、+=实现。例如:
C++代码
CString str(_T("jizhuomi")); // str内容为"jizhuomi" str = _T("www.") + str + _T("."); // str为"www.jizhuomi." str += _T("com"); // str为"www.jizhuomi.com"
4. CString对象的比较
CString对象的比较可以通过==、!=、<、>、<=、>=等重载运算符实现,也可以使用Compare和CompareNoCase成员函数实现。
int Compare(PCXSTR psz) const;
将该CString对象与psz字符串比较,如果相等则返回0,如果小于psz则返回值小于0,如果大于psz则返回值大于0。
int CompareNoCase(PCXSTR psz) const throw();
此函数与Compare功能类似,只是不区分大小写。
例如:
C++代码
CString str1 = _T("JiZhuoMi"); CString str2 = _T("jizhuomi"); if (str1 == str2) { // 因为str1、str2不相等,所以不执行下面的代码 ... } if (0 == str1.CompareNoCase(str2)) { // 因为不区分大小写比较时,CompareNoCase函数返回0,所以执行下面的代码 ... }
5. CString对象字符串的提取操作
CString Left(int nCount) const;
提取该字符串左边nCount个字符的子字符串,并返回一个包含这个子字符串的拷贝的CString对象。
CString Right(int nCount) const;
提取该字符串右边nCount个字符的子字符串,并返回一个包含这个子字符串的拷贝的CString对象。
CString Mid(int iFirst,int nCount) const;
提取该字符串中以索引iFirst位置开始的nCount个字符组成的子字符串,并返回一个包含这个子字符串的拷贝的CString对象。
CString Mid(int iFirst) const;
提取该字符串中以索引iFirst位置开始直至字符串结尾的子字符串,并返回一个包含这个子字符串的拷贝的CString对象。
例如:
C++代码
CString str1 = _T("jizhuomi"); CString str2 = str1.Left(3); // str2为"jiz" str2 = str1.Right(2); // str2为"mi" str2 = str1.Mid(1,3); // str2为"izh" str2 = str1.Mid(5); // str2为"omi"
6. CString对象字符串的查找操作
int Find(PCXSTR pszSub,int iStart=0) const throw( );
int Find(XCHAR ch,int iStart=0) const throw( );
在CString对象字符串的iStart索引位置开始,查找子字符串pszSub或字符ch第一次出现的位置,如果没有找到则返回-1。
int FindOneOf(PCXSTR pszCharSet) const throw( );
查找pszCharSet字符串中的任意字符,返回第一次出现的位置,找不到则返回-1。
int ReverseFind(XCHAR ch) const throw();
从字符串末尾开始查找指定的字符ch,返回其位置,找不到则返回-1。这里要注意,尽管是从后向前查找,但是位置的索引还是要从开始算起。
C++代码
CString str = _T("jizhuomi"); int nIndex1 = str.Find(_T("zh")); // nIndex1的值为2 int nIndex2 = str.FindOneOf(_T("mui")); // nIndex2的值为1 int nIndex3 = str.ReverseFind(_T('i')); // nIndex3的值为7
7. CString类对象字符串的替换与删除
int Replace(PCXSTR pszOld,PCXSTR pszNew);
用字符串pszNew替换CString对象中的子字符串pszOld,返回替换的字符个数。
int Replace(XCHAR chOld,XCHAR chNew);
用字符chNew替换CString对象中的字符chOld,返回替换的字符个数。
int Delete(int iIndex,int nCount = 1);
从字符串中删除iIndex位置开始的nCount个字符,返回删除操作后的字符串的长度。
int Remove(XCHAR chRemove);
删除字符串中的所有由chRemove指定的字符,返回删除的字符个数。
例如:
C++代码
CString str = _T("jizhuomi"); int n1 = str.Replace(_T('i'), _T('j')); // str为"jjzhuomj",n1为2 int n2 = str.Delete(1,2); // str为"jhuomj",n2为6 int n3 = str.Remove(_T('j')); // str为"huom",n3为2
8. CString类的格式化字符串方法
使用CString类的Format成员函数可以将int、short、long、float、double等数据类型格式化为字符串对象。
void __cdecl Format(PCXSTR pszFormat,[, argument]...);
参数pszFormat为格式控制字符串;参数argument可选,为要格式化的数据,一般每个argument在pszFormat中都有对应的表示其类型的子字符串,int型的argument对应的应该是"%d",float型的应对应"%f",等等。
例如:
C++代码
CString str; int a = 1; float b = 2.3f; str.Format(_T("a=%d,b=%f"), a, b); // str为"a=1,b=2.300000"
好了,关于CString类的内容就讲到这里了,用法不少,但仍不全,大家可以查看MSDN深入学习。谢谢大家耐心读完本节教程。
本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@pclwef.cn
文章转载自:本文探讨 SQL Server 中 NULL 和空值之间的区别,并讨论如何有效地处理它们。
Unity 是一款功能极其丰富的游戏引擎,允许开发人员将各种媒体集成到他们的项目中。但是,它缺少最令人兴奋的功能之一 - 将 Web 内容(例如 HTML、CSS 和 JavaScript)直接渲染到 3D 场景中的纹理上的能力。在本文中,我们将介绍如何使用 DotNetBrowser 在 Unity3D 中将 Web 内容渲染为纹理。
DevExpress v24.2帮助文档正式发布上线了,请按版本按需下载~
本教程将向您展示如何用MyEclipse构建一个Web项目,欢迎下载最新版IDE体验!
用于构建类似微软Office、Visual Studio等MFC用户界面高级套包。
BCGSuite for MFCMFC功能扩展控件,弥补MFC中没有网格、日历、编辑器等典型界面控件的缺憾
Xtreme Toolkit Pro专为Windows平台开发人员提供最全面的Visual C++界面开发组件
服务电话
重庆/ 023-68661681
华东/ 13452821722
华南/ 18100878085
华北/ 17347785263
客户支持
技术支持咨询服务
服务热线:400-700-1020
邮箱:sales@pclwef.cn
关注我们
地址 : 重庆市九龙坡区火炬大道69号6幢