转载:CString,string,char*的综合比较

解决fetch_california_housing数据集403错误的3种实用方法(附手动下载地址) 本文针对机器学习中常见的fetch_california_housing数据集403 Forbidden错误,提供了三种实用的解决方案。从理解HTTP 403错误的根源出发,详细介绍了修改源码路径、使用国内镜像源以及手动下载并配置数据文件这三种方法,并附带了可靠的手动下载地址,帮助开发者彻底解决数据加载障碍,确保机器学习项目顺利进行。 阅读详情

ShITer

a Shanghai ITer —— 涛的IT人生路

  优快云 |  社区 |  技术中心 |  BLOG首页 |  我的首页 |  个人档案 |  联系作者 |  聚合  |   |  搜索 |  登录
  34篇原创: 0篇翻译: 30篇转载: 34633次点击: 45个评论: 2个Trackbacks

公告

IT人生路

名人说
  时间是伟大的作者,她能写出未来的结局──卓别林。

E-Mail:
联系我


<script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type="text/javascript"> </script> width="160" scrolling="no" height="600" frameborder="0" allowtransparency="true" hspace="0" vspace="0" marginheight="0" marginwidth="0" src="http://pagead2.googlesyndication.com/pagead/ads?client=ca-pub-3257035996426227&dt=1179392460843&lmt=1179392460&format=160x600_as&output=html&correlator=1179392460843&url=http%3A%2F%2Fblog.youkuaiyun.com%2FPassants%2Farchive%2F2005%2F02%2F21%2F296512.aspx&color_bg=FFFFFF&color_text=000000&color_link=0000FF&color_url=008000&color_border=336699&ref=http%3A%2F%2Fblog.youkuaiyun.com%2Fjoise%2Farchive%2F2004%2F04%2F15%2F14519.aspx&cc=100&flash=9&u_h=1024&u_w=1280&u_ah=957&u_aw=1280&u_cd=32&u_tz=480&u_his=1&u_java=true&u_nplug=27&u_nmime=148" name="google_ads_frame">

文章

收藏

相册

好友

存档

最近评论




(一) 概述

string和CString均是字符串模板类,string为标准模板类(STL)定义的字符串类,已经纳入C++标准之中;

CString (typedef CStringT<TCHAR, StrTraitMFC<TCHAR>> CString)为Visual C++中最常用的字符串类,继承自CSimpleStringT类,主要应用在MFC和ATL编程中,主要数据类型有char(应用于ANSI), wchar_t(unicode),TCHAR(ANSI与unicode均可);

char*为C编程中最常用的字符串指针,一般以’/0’为结束标志;

(二) 构造

 string是方便的,可以从几乎所有的字符串构造而来,包括CString和char*;

 CString次之,可以从基本的一些字符串变量构造而来,包括char*等;

 char*没有构造函数,仅可以赋值;

 举例:

char* psz = “joise”;

CString cstr( psz );

string str( cstr );

(三) 运算符重载

a) operator=

 string是最方便的,几乎可以直接用所有的字符串赋值,包括CString和char*;

 CString次之,可以直接用些基本的字符串赋值,包括char*等;

 char*只能由指针赋值,并且是极危险的操作,建议使用strcpy或者memcpy,而且char*在声明的时候如未赋初值建议先设为NULL,以避免野指针,令你抓狂;

 举例:

char *psz = NULL;

psz = new char[10]; //当然,以上的直接写成char *psz = new char[10];也是一样

memset( psz, 0, 10 );

strcpy( psz, “joise” ); 

CString cstr;

cstr = psz;

string str;

str = psz;

str = cstr;

delete []psz;

b) operator+

string与CString差不多,可以直接与char*进行加法,但不可以相互使用+运算符,即string str = str + cstr是非法的,须转换成char*;

char*没有+运算,只能使用strcat把两个指针连在一起;

 举例:

char* psz = “joise”;

CString cstr = psz;

cstr = cstr + psz;

string str = psz;

str = str + str + psz;

strcat( psz, psz );

strcat( psz, cstr );//合法

strcat( psz, str );//非法,由此可见,CString可自动转换为const char*,而string不行

c) operator +=

 string是最强大的,几乎可以与所有的字符串变量+=,包括CString和char*;

 CString次之,可以与基本的一些字符串变量进行+=而来,包括char*等;

char*没有+=运算符,只能使用strcat把两个指针连在一起;

d) operator[]

 CString最好,当越界时会抛出断言异常;

 string与char*下标越界结果未定义;

举例:

char* psz = “joise”;

CString cstr = psz;

cout << cstr[8];

string str = psz;

cout << str[8];

cout << psz[8];

e) operator== 、operator!=、operator> 、operator< 、operator>= 、perator<=

 CString与string之间不可以进行比较,但均可以与char*进行比较,并且比较的是值,而不是地址;

cout << ( psz == cstr );

cout << ( psz == str );

cout << ( str == psz );

cout << ( cstr == psz );//以上代码返回均为1

(四) 常用算法

a) 查找

作用char*stringCString
查找指定值strchr
strstr
strrstr
strspn
findFind
第一个匹配的值 fild_first_ofFindOneOf
从后面开始查找  ReserveFind
指定匹配方式 find_if 

注:find_if中是把范围内的值挨个代入匹配函数直至返回true

b) 比较

作用char*stringCString
查找指定值(区分大小写)strcmp
strncmp
strcoll
_strncoll
operator<
operator>
operator<= 
operator>=
operator==
operator!=
Collate

Compare
查找指定值(不区分大小写)_stricmp
_strnicmp
_stricoll
_strnicoll
 CollateNoCase

CompareNoCas

注:返回值如果<0则前面的值小于后面的值,反之亦然

c) 替换

作用char*stringCString
查找指定值_strset
_strnset
replace
replace_copy
replace_copy_if
replace_if
Replace

d) 插入

作用char*stringCString
查找指定值 insertInsert




e) 增加

作用char*stringCString
动态增加值strcatpush

append
Append

AppendChar

AppendFormat


f) 截取

作用char*stringCString
得到部分值用下标操作substrLeft

Mid

Right

Truncate


g) 移除

作用char*stringCString
移除部份值 removeRemove
移除空白值RemoveBlanks

注:此为ATL提供,非C函数
remove_ifTrim

TrimLeft

TrimRig


h) 转换大小写

作用char*stringCString
转换大小写_strlwr

_strupr
 MakeLower

MakeUpper


i) 与其他类型转换

作用char*stringCString
转化为数字atoi

atod

atof
 Format
转化为char* c_str
GetBuffer

GetBufferSetLen

j) 格式化

作用char*stringCString
格式化sprintf Format


k) 得到长度

作用char*stringCString
得到长度strlenlengthGetLength
得到大小 sizeGetAllocLength

l) 判断为空

作用char*stringCString
判断是否为空判断是否==NULL或者第一个字符是否是’/0’emptyIsEmpty

m) 重定义大小

作用char*stringCString
重定义大小realloc
new
resizeGetBufferSetLength

n) 释放资源

作用char*stringCString
释放free

delete (delete[])
 ReleaseBuffer

ReleaseBufferSetLength

(五) 安全性>

CString > string > char*;

(六) 灵活性

CString > string >char*;

(七) 可移植性

char* = string > CString


e) 增加

作用char*stringCString
动态增加值strcatpush

append
Append

AppendChar

AppendFormat


f) 截取

作用char*stringCString
得到部分值用下标操作substrLeft

Mid

Right

Truncate


g) 移除

作用char*stringCString
移除部份值 removeRemove
移除空白值RemoveBlanks

注:此为ATL提供,非C函数
remove_ifTrim

TrimLeft

TrimRig


h) 转换大小写

作用char*stringCString
转换大小写_strlwr

_strupr
 MakeLower

MakeUpper


i) 与其他类型转换

作用char*stringCString
转化为数字atoi

atod

atof
 Format
转化为char* c_str
GetBuffer

GetBufferSetLen

j) 格式化

作用char*stringCString
格式化sprintf Format


k) 得到长度

作用char*stringCString
得到长度strlenlengthGetLength
得到大小 sizeGetAllocLength

l) 判断为空

作用char*stringCString
判断是否为空判断是否==NULL或者第一个字符是否是’/0’emptyIsEmpty

m) 重定义大小

作用char*stringCString
重定义大小realloc
new
resizeGetBufferSetLength

n) 释放资源

作用char*stringCString
释放free

delete (delete[])
 ReleaseBuffer

ReleaseBufferSetLength

(五) 安全性>

CString > string > char*;

(六) 灵活性

CString > string >char*;

(七) 可移植性

char* = string > CString



Trackback: http://tb.blog.youkuaiyun.com/TrackBack.aspx?PostId=296512


[ 收藏到我的网摘]   涛发表于 2005年02月21日 21:03:00





没有评论。

发表评论

 
大名:
网址:
评论 
   
width="0" scrolling="no" height="0" frameborder="no" src="http://www.youkuaiyun.com/ggmm/dd333.htm" border="0" name="myframe" id="myframe">
手把手排查IOMMU映射故障:从内核日志到硬件寄存器调试全指南 本文详细解析了IOMMU映射故障的排查方法,从内核日志分析到硬件寄存器调试,提供了一套完整的诊断流程。涵盖AMD和Intel平台的特定调试技巧,包括ATS协商失败、DMA传输错误等常见问题的解决方案,并介绍了高级调试工具链的搭建与性能优化策略。 阅读详情

相关推荐

谈谈 FOC和BLDC 电机控制

更具体地说,通过 “Park 变换”,我们可以把三相交流电流信号转换成两相直流电流信号,从而可以把三相交流电机的控制变得和两相直流电机控制一样简单。在内环 “电流环”中,一些比较重要的模块有 “Clark 变换” 和 “Park 变换” 等数学模块、电机电流信号检测模块以及能够提供电机的转速和转角位置信息的模块。日前,Qorvo 电机控制应用高级系统/应用工程师张绍发表了一个与 BLDC 和 FOC 相关的演讲,科普了 FOC 的相关知识,还讲解了 Qorvo 用于简化 FOC 实施方案的方法。

U_YAO的博客 2119

CString and char *

1、多字符集设置下: CString To char*: 1)、 CString str; char *buf = str.GetBuffer(); 2)、 CString str; char *buf = (LPSTR)(LPCSTR)str; char* To CString 1)、...

454

VSCode玩转STM32:手把手教你配置EIDE插件与OpenOCD调试(附野火DAP配置文件详解)

本文详细介绍了如何在VSCode中配置EIDE插件与OpenOCD进行STM32开发,特别针对野火DAP调试器提供了配置文件详解。从基础环境搭建到深度调试技巧,帮助开发者高效完成STM32项目开发,实现现代化嵌入式开发工作流。

weixin_26905487的博客 553

CString与char之间的转换

1、多字符集设置下: CString To char*: 1)、 CString str;  char *buf = str.GetBuffer(); 2)、 CString str; char *buf = (LPSTR)(LPCSTR)str; char* To CString 1)、 char *buf; CString str(buf); 2、Uni

余先桑 3万+

小米手机免登录开启USB安装与调试(MIUI 9-11实测,已Root可用)

本文详细介绍了小米手机免登录开启USB安装与调试的底层方案,适用于已Root的MIUI 9-11版本设备。通过修改系统配置、禁用MIUI安装器验证和强制开启USB调试等步骤,帮助开发者绕过账号限制,实现快速调试。文章包含不同MIUI版本的兼容性处理和常见问题解决方法,实测有效。

weixin_33675507的博客 289

深入解析set_input_delay:从理论到实践的关键时序约束

本文深入解析了FPGA/ASIC设计中关键的时序约束命令set_input_delay,从理论到实践详细阐述了其工作原理。文章重点讲解了如何结合setup time和hold time,通过计算-max与-min值来精确描述外部延迟,确保芯片内部逻辑能稳定捕获数据,并介绍了虚拟时钟、DDR接口约束等实战技巧与常见陷阱。

weixin_29313423的博客 317

CString和char*的相互转换

首先声明我不是一个高手,而是一个初学者,文章同样也是一个初学者对于CString和char*转换的理解。      因为需要,接触C++一段时间了,其中最为困扰我的问题就是在使用C++的过程中CString和char*的转换,在网上搜索了一下,看到问这个问题的人挺多的。我使用的平台是Win2003+VC 2005,本来这个很简单的问题稍微复杂了一点在2005里面。     在我的工程里面要集成一个

jiahehao的专栏 2016

SAP RAP学习系列合集介绍

《SAP RAP学习系列合集:从入门到部署的完整指南》摘要: 本文介绍了作者创建的SAP RAP学习系列合集,涵盖RAP开发从基础概念到实战部署的全流程。系列目前包含17篇文章,系统讲解了RAP核心开发技术:从数据建模、UI构建到行为定义(包括并发控制、草稿功能、授权验证等),最后详细演示了应用部署到Fiori Launchpad的两种方案(OP版和ES版)。

DeveloperMrMeng的博客 1492

从CString到char的相互转换

在进行MFC上位机编写时常常会遇到数据类型转换的问题,MFC编辑框字符串类型为CString,当要将CString数据保存到sqlit3还是从文件中读取字符串到编辑框都会要用到这两者的转换。

小天了的博客 1661

Qt5.14.2开发Mqtt应用程序

然后,你就做不下去了…很明显,大部分博主写的东西不是缺头就是缺尾,带偏了许多读者。,因此我们需要clone的是这个分支版本,而不是这个默认的。然后将编译产物中include里的所有.h文件复制到。下载完后直接默认安装即可,这一步没什么好说的。看到了没,这个才是正确的操作方式,而主线的。信号来判断,自行实现自己的槽函数。然后选择构建方式,这里我选择的是。信号来判断自行实现自己的槽函数。信号来判断自行实现自己的槽函数。源代码,如下图所示,双击打开。收到下行消息时,可以通过连接。

Bruce.yang的嵌入式之旅 2310

YOLOv11改进 - 卷积Conv | PATConv(Partial Attention Convolution)部分注意力卷积,在减少计算量的同时融合卷积与注意力的优势 | AAAI 2026

本文提出部分注意力卷积(PATConv)机制,并将其集成到YOLOv11中。传统神经网络中,卷积计算密集,注意力机制全局计算冗余,此前的“部分卷积”会丢失未计算通道的特征价值。PATConv通过“通道拆分 - 并行处理 - 结果拼接”的逻辑,给不同通道分配“擅长的任务”,兼顾局部与全局特征。基于此,它还衍生出PAT_ch、PAT_sp和PAT_sf三种细分模块。此外,还提出了动态部分卷积(DPConv),并构建了新的混合网络家族PartialNet。我们将PATConv代码集成到YOLOv11中,实验表明,

魔改工程师的博客 1085

C++:wchar_t* & string相互转换

什么是? char*和string字符串中的字符都是一个字符占一个字节的; wchar_t* 宽字符,大部分字符都以一个字符占固定长度的字节 (2字节) 储存; 【注】:一个中文通常占用2个字节,当需要处理中文时,可以首先将string转换成char*,然后将char*转换成wchar_t*即可。 怎么做? 在window环境中,可以利用 MultiByteToWideChar();...

SSS_369 1万+

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

(转载)CString,string,char*的综合比较

(一) 概述string和CString均是字符串模板类,string为标准模板类(STL)定义的字符串类,已经纳入C++标准之中;CString(typedef CStringT > CString)为Visual C++中最常用的字符串类,继承自CSimpleStringT类,主要应用在MFC和ATL编程中,...

weixin_30609287的博客 114

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

c++中char* string CString的互相转换

#include //使用C++标准库的string类时 using namespace std; //同上 #include    #include #include     //要将string类和int类型直接转换最好有这些包含,                        //因为自己写一个转换函数比较方便,函数定义参考如下 string getstring ( cons

2233

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

MFC中char*,string和CString之间的转换

本文转载自:https://www.cnblogs.com/maowang1991/p/3570328.html 作者:maowang1991 转载请注明该声明。 一、将CString类转换成char*(LPSTR)类型 方法一,使用强制转换。例如:CString theString( "This is a test" );LPTSTR lpsz =(LPTSTR)(LPC...

kkwant的博客 1787

CString,string和char*

CString是MFC中的 标准C中没有string,有string.h头文件,其中是strcpy,strcmp等函数。但操作对象都是char*类型 string是C++中封装的 转化:LPCSTR char* char*与string: char*ch =str.c_str(); char* ch = str.data(); strings1=ch; ...

diechi0288的博客 119

【MFC】char*、string、CString类型转换

类型转换目录01. 三种类型介绍1.1. char*类型1.2. string类型1.3. CString类型02. 三种类型的互相转换2.1 类型转换图2.2 类型转换方法(six way)2.2.1 string转换为CString2.2.2 CString转换为string2.2.3 char*转换为string2.2.4 string转换为char*2.2.5 char*转换为CString2.2.6 CString转换为char*总结 01. 三种类型介绍 1.1. char*类型 char是从

Cain Xcy的博客 1925

VC CString,int,string,char*之间的转换

1 CString,int,string,char*之间的转换 string 转 CString CString.format("%s", string.c_str()); char 转 CString CString.format("%s", char*); char 转 string string s(char *); string 转 char * char *p = string...

ddnxwnw0091的博客 131

CString、char、int、string相互转化

相比于C#,C++的类型转换更为麻烦。下面列举几种主要的类型转换,当然转换的方法有很多,以下可能是最简单、有效的方式了,以后在工作和学习中再逐渐添加其他的类型转换。 CString转char* CString file=GetFilePath()+"parameter.txt"; char* pszFileName=(LPSTR)(LPCTSTR)file; ...

136

CString、string、char *、char[]、int、bool、char相互转换

1124 转载的:原文链接 一、string转CString string str1 = "hello world"; CString cstr(str1.c_str());//string转CString 二、CString转string CString theCStr = L"Hello C++"; std::string str2(CW2A(theCStr.GetString()));//初始化str2 cout << "str3 = " << str2 << e

weixin_38665351的博客 1457

MFC之CString与const char* string 转换

MFC开发时经常会遇到CString、string/std::string、char*等类型相互转换的问题,现将一些思考与心得记下来与大家分享: 一、CString强制类型转换为const char*,在变量前加上:(char *)(LPCTSTR),这样做虽不会报错,但其转换后的值可能是乱码,不推荐这样做! 二、利用中间变量(string类型),原理: 1)CString...

weixin_30668887的博客 197

CString,string,char*之间的转换(转)

CString,string,char*之间的转换(转) 这三种类型各有各的优点,比如CString比较灵活,是基于MFC常用的类型,安全性也最高,但可移植性最差。string是使用STL时必不可少的类型,所以是做工程时必须熟练掌握的;char*是从学习C语言开...

123

【转载】char* string CString比较总结

char* string CString比较总结 (2012-02-17 09:50:21) 转载▼ 标签: 育儿 分类: 学习   char* string CString比较总结   (一) 概述 string和CString均是字符串模板类,string为标准模板类(STL)定义的字符

pursue2009的专栏 398

转载:char* string CString比较总结

<!--var theForm = document.forms[Form1];if (!theForm) { theForm = document.Form1;}function __doPostBack(eventTarget, eventArgument) { if (!theForm.onsubmit || (th

prophet08的专栏 994

[转载]转:char*, char[] ,CString, string的转换

原文地址:转:char*,char[],CString,string的转换作者:gisldq (一) 概述string和CString均是字符串模板类,string为标准模板类(STL)定义的字符串类,已经纳入C++标准之中;CString(typedef CStringT > CString)为Visual C++中最常用的字符串类,继承自CSimpleStringT...

b602413745496944的博客 118

[VC/C++]CString,int,string,char*之间的转换

string 转 CString CString.format("%s", string.c_str()); char 转 CString CString.format("%s", char*); char 转 string string s(char *); string 转 char * char *p = string.c_str(); CString 转 string strin...

dengfuchai7536的博客 182
上一篇: 转载:MATLAB命令
下一篇: 转载:VC++常用数据类型及其操作详解
prophet08
博客等级 码龄20年 2粉丝 0原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值