CString、string与char *的比较(转帖)

C++学习——CString,char * ,string的相互转换 CString头文件#include <afx.h> string头文件#include <string.h> 1、CString转char * CString cstr; char *p =(LPSTR)(LPCTSTR)cstr; 2、string转 CString CString.format(”%s”, string.c_str()); 用c_str()确实比dat... 阅读详情

CString、string与char *的比较(转帖)  

(一)概述

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

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

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

(二)构造

string是方便的,可以从几乎所有的字符串构造而来,包括CString和char *;
CString次之,可以从一些基本的字符串变量构造而来,包括char*等;
char*没有构造函数,仅仅可以赋值;
eg: 
char * psz = ”momo“;
CString cstr(psz);
string str(cstr);

(三) 运算符重载

a) operator=
string是最方便的,几乎可以直接用所有的字符串赋值,包括CString和char*;
CString次之,可以直接用些羁绊的字符串赋值,包括char*等;
char*只能由指针赋值,并且是极危险的操作,建议使用strcpy或者memcpy,而且char*在声明的时候如果未赋值,建议先设置为NULL,避免野指针。

eg:char *psz = NULL;
       psz = new char[10];        //也可以直接写为char *psz = new char[10];
       memset(psz, 0, 10);
       strcopy(psz, "joise");

       CString  cstr;
       cstr = psz;
        
       string str;
       str = psz
       str = cstr;
       delete [] psz;
b)   operator+
string与CString差不多,可以直接与char*进行加法,但是不可以互相使用+运算符,即string  str = str + cstr是非法的。必须有一个操作数为
a null-terminated character 。char*, 或者”  ...  “;
char* 没有+运算,只能使用strcat把两个指针连在一起

eg:
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*下标越界结果未定义

eg:
 char *psz = ”momo“;
CString cstr = psz;
cout<<cstr[8];
string str = psz;
cout<<str[8];
cout<<psz[8];

e)  operator == 、operator !=、 operator>、operator<、operator>=、operator<=
CString与string之间不可以进行比较,但是均可以与char*进行比较,并且比较的是值,而不是地址

cout<<(psz == cstr);
cout<<(psz == str);
cout<<(str == psz);
cout<<(cstr == psz); //以上均可。

(四)常用算法
a)查找

CString、string与char *的比较(转帖) - 默默 - 默默无闻
注:find_if中是把范围内的值挨个代入匹配函数直至返回true;

b)比较
CString、string与char *的比较(转帖) - 默默 - 默默无闻

c)替换
CString、string与char *的比较(转帖) - 默默 - 默默无闻
 
d)插入
CString、string与char *的比较(转帖) - 默默 - 默默无闻
 
 e)增加
CString、string与char *的比较(转帖) - 默默 - 默默无闻
 
f)截取
CString、string与char *的比较(转帖) - 默默 - 默默无闻
 
g)移除
CString、string与char *的比较(转帖) - 默默 - 默默无闻
 
h)转换大小写
CString、string与char *的比较(转帖) - 默默 - 默默无闻
 
i)与其他类型转换
CString、string与char *的比较(转帖) - 默默 - 默默无闻
 
j)格式化
CString、string与char *的比较(转帖) - 默默 - 默默无闻
 
k) 得到长度
CString、string与char *的比较(转帖) - 默默 - 默默无闻
 
l)  判断为空
CString、string与char *的比较(转帖) - 默默 - 默默无闻
 
m)重定义大小 
CString、string与char *的比较(转帖) - 默默 - 默默无闻
 
n) 释放资源
CString、string与char *的比较(转帖) - 默默 - 默默无闻
 
(五)安全性
CString >string>char*

(六)灵活性
CString >string>char*

(七)可移植性
char*>string>CString
 
上位机介绍:C# 开发者的必知基础 上位机是指在工业控制系统中,位于上层、负责人机交互和数据管理的计算机/软件,与“下位机”(PLC、传感器、变频器、单片机等硬件设备)相对应,核心是“向下通信控制设备,向上展示交互数据”。下位机:一线干活的“工人”(执行采集、控制指令);上位机:指挥管理的“办公室人员”(发指令、看数据、做报表)。C#开发者掌握上位机开发的核心是“通信+UI+稳定性基础层:搞懂WinForms/WPF基础、串口/Modbus通信,能实现核心功能;进阶层:掌握分层设计、异步编程、工业级容错(断线重连、数据校验); 阅读详情

相关推荐

信息抽取实战:三元组抽取(限定领域 vs 开放领域)(附代码)

信息抽取实战:三元组抽取 目录信息抽取实战:三元组抽取一、限定领域的三元组抽取比赛介绍数据分析序列标注模型关系分类模型三元组提取总结开放领域的三元组抽取标注平台文本分类新数据进行三元组抽取总结参考文献 一、限定领域的三元组抽取   本项目将会介绍在2019语言与智能技术竞赛的三元组抽取比赛方面的一次尝试。由于该比赛早已结束,当时也没有参加这个比赛,因此没有测评成绩,我们也只能拿到训练集和验证集。但是,这并不耽误我们在这方面做实验。 比赛介绍   该比赛的网址为:http://lic2019.ccf.org.

南有芙蕖 2万+

char型和string型的区别

char字符数组和string字符串的区别: char型 char型是原C库保留,对于char a【】型字符数组,对其处理的函数有----注:以下函数都在头文件中 :1、测量数组长度(即字符个数)strlen ,用法: int x; x=strlen(a); 2、字符数组比较函数:strcmp,用法: char a[m],b[n]; int x; x=strcmp(a,b); 对两个数组开始逐个...

JustinAustin的博客 4495

OpenMontage:AI代理驱动的端到端视频生产系统实战指南

在当今内容创作领域,自动化视频生成技术正成为提升生产效率的关键。其核心原理在于通过智能体(Agent)架构,将复杂的视频制作流程拆解为可被AI理解和执行的标准化任务,从而实现从创意到成片的端到端自动化。这项技术的核心价值在于大幅降低了专业视频制作的门槛,使非专业用户也能快速产出具有一定专业度的内容。其典型应用场景包括社交媒体短片、产品演示、知识科普视频的批量生产。OpenMontage正是这一技术理念的杰出实践,它构建了一个完整的代理驱动视频生产系统,将AI编码助手转变为能自主规划并执行脚本撰写、素材检索、

weixin_35757191的博客 649

CString、string、char*之间的区别和转换

一、区别 CString和string均是字符串模板类。 CString为Visual C++中最常用的字符串类,主要应用在MFC和ATL编程中,安全性最高,但可移植性最差。 string为标准模板类(STL)定义的字符串类,已经纳入C++标准之中,使用STL时必不可少的类型,所以是做工程时必须熟练掌握的。 char*为C编程中最常用的字符串指针,一般以'\0'为结束标志。 string

SXY的博客 944

TCN+iTransformer时间序列预测实战:从风电功率预测到源码解析(附完整代码)

本文深入探讨了TCN与iTransformer融合模型在时间序列预测,特别是风电功率预测中的应用。通过解析iTransformer‘倒置’视角的创新架构与TCN强大的局部时序捕捉能力,文章提供了完整的融合方案设计、源码实现及实战调优经验,旨在构建更强大的下一代预测引擎。

weixin_29062671的博客 266

行业变革下的功能安全落地痛点3:高阶智驾安全责任转移 —— 从 “人为中心” 到 “机器主责” 的产业阵痛

文章围绕高阶智驾(L3 级)落地挑战,探讨安全责任从 “人控” 向 “机控” 转移的本质、技术短板导致的责任模糊、全球法规实践及技术 - 法规 - 保险的破局路径。

my9111526 127

CString与char *互转总结

转自作者:flydream0 原文链接:https://blog.youkuaiyun.com/flydream0/article/details/8543525/ 1 前言 今天在网上看论坛,发现大家对CString与Char *互转各说一词,其实我发现提问者所说的情况与回答问题的人完全不是同一情况,这里做一总结. 首先大家得清楚一件事,一般在网上提出问题的人大部分使用的都是VC,那么你就应该知道,在VC下编程,工程属性中有一属性Charecter Set属性,其值可以设置为Use Multi-Byte Charec

HARRYBEAR_xing的博客 1万+

[PCIE5.0] 4.2.3.2 Encoding of Presets

• 发射器预设:发射器预设值用4位二进制编码,表示不同的预设设置(P0 到 P10),这些设置定义了信号的传输特性。• 接收器预设提示:接收器预设提示是通过3位二进制编码告诉接收器建议的增益值,用于调整接收器的灵敏度(适用于8.0 GT/s数据速率)。

系统固件工程师 575

CString与char*之间的互转

网上有很多CString和char*之间的互转,但是都没有写的很清楚,有的是在多字节下的转换有的是在Unicode 下面的转换,导致转换出来乱码。通常情况下建议写代码的时候养成良好的习惯,都使用 Unicode 字符集,特记录下方便以后查阅。

路的博客 1178

SAP SEGW 事物码里的 Association 建模方式

Association 模型用于描述 OData 模型里不同 Entity Type 之间的关联关系。我们来看一个具体的例子:Principal Entity(主体):代表 association 的主导端。Cardinality(基数):指定主体实体类型和依赖实体类型之间的关系。按 F4 或点击从列表中选择。关联的多重性如下:为引用约束()指定以下参数,目的是将主体实体类型的每个键,关联到从属实体类型的一个属性:Referential Constraints 的一个例子如下: 引用约束(Referenti

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 911

揭秘大厂 Unity 红点系统设计:别小看右上角那颗小红点,它能把你项目搞崩

本文详细探讨了游戏大厂如何设计高性能红点系统。红点作为提升用户活跃和转化率的重要工具,需要支持多级联动、动态判断和全局一致性。系统采用观察者模式和树形结构,分为数据管理、逻辑判定、订阅通知和UI展示四大模块,通过事件驱动方式实现高效刷新。文章特别强调了解耦设计、配置化管理和性能优化,并提出了热更新、数据分析等高级应用场景。最终指出,优秀的红点系统需要架构标准化、自动化配置和团队紧密协作,是大型游戏项目的关键技术基础。

本博客聚焦游戏开发技巧、创业实战心得及大学热门课程干货。这里既有技术深度,也有思维广度,无论你是开发者、创业者还是高校学子,都能在这里找到适合自己的成长之路! 379

CString与string、char*的区别和转换

原文地址:https://blog.youkuaiyun.com/luoweifu/article/details/20232379 看到这篇博文受用很大,转发记录下 在C++的开发中经常会碰到string、char*以及CString,这三种都表示字符串类型,有很多相似又不同的地方,常常让人混淆。下面详细介绍这三者的区别、联系和转换: 各自的区别 char*: char*是一个指向字符的指针,是一个内...

u012512100的博客 1562

《派出你的AI同事:WorkBuddy案例实战》062:投研资讯摘要与预警

投研资讯摘要与预警:新闻、公告、行情交给 AI 同事提炼与预警,投研从“刷资讯”变成“读摘要”。

LuckyHanMo的博客 184

[转帖]CString,string,char*的转换及综合比较zz

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 =

Renaissance的专栏 596

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

CString,string,char*之间的转换

这三种类型各有各的优点,比如CString比较灵活,是基于MFC常用的类型,安全性也最高,但可移植性最差。string是使用STL时必不可少的类型,所以是做工程时必须熟练掌握的;char*是从学习C语言开始就已经和我们形影不离的了,有许多API都是以char*作为参数输入的。所以熟练掌握三者之间的转换十分必要。 以下我用简单的图示指出三者之间的关系,并以标号对应转换的方法。 1 strin...

编程知识分享 2万+

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

CString转char * ,string

CString头文件#include <afx.h> string头文件#include <string.h> 1、CString转char * CString cstr; char *p =(LPSTR)(LPCTSTR)cstr; 2、string转CString CString.format(”%s”, string.c_str()); 用c_st...

Pei_hua100的专栏 1万+

c++——CString,string,char*之间的转换

这三种各有优点。比如CString比较灵活,是基于MFC常用的类型,安全性也最高,但可移植性最差。 string是使用STL时必不可少的类型,所以是做工程时必须熟练掌握的; char*是从学习C语言开始就已经和我们形影不离的了,有许多API都是以char*作为参数输入的。所以熟练掌握三者之间的转换十分必要。 以下我用简单的图示指出三者之间的关系,并以标号对应转换的方法。 1 s...

yimixgg的博客 3879

CString,string,char*的综合比较及相互转换

string和CString均是字符串模板类,string为标准模板类(STL)定义的字符串类,已经纳入C++标准之中;CString(typedef CStringT> CString)为Visual C++中最常用的字符串类,继承自CSimpleStringT类,主要应用在MFC和ATL编程中,主要数据类型有char(应用于ANSI),wchar_t(unicode),TCHAR(ANSI

Ray_Z的专栏 3120

CString,string,char*的综合比较

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

zhoubl668的专栏:远帆,梦之帆! 1305

CString,string 和 Char*比较

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

zxccaoya的博客 740

char* string CString比较总结

转自:http://wiseman.cnblogs.com/archive/2005/11/04/268973.html (一) 概述 string和CString均是字符串模板类,string为标准模板类(STL)定义的字符串类,已经纳入C++标准之中; CString(typedef CStringT > > CAtlString;typedef CAtlString C

1017

C语言cstring转换为char数组,string,CString,char*之间的转化

string,CString,char*之间的转化int 转 CString:CString.Format("%d",int);...............................string 转 CStringCString.format("%s", string.c_str());用c_str()确实比data()要好....................................

weixin_42374930的博客 2374

CString,string,char*,比较

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

weixin_33831196的博客 519

CString,string,char*

CString,string,char*的综合比较(一) 选择自 joise 的 Blog2008-03-09 17:44    在写程序时对这个概念老老是很模糊,这下找到个家伙总结的很好,借用下: (一)概述 string和CString均是字符串模板

applehoney的专栏 1296
上一篇: VC程序需要的集合类
下一篇: char * 操作
zljjava
博客等级 码龄15年 155粉丝 15原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值