char* CString string区别
来源:互联网 发布:windows mobile刷安卓 编辑:程序博客网 时间:2024/06/16 00:42
char* CString string区别
点击打开链接
一.介绍
string和CString均是字符串模板类,string为标准模板类(STL)定义的字符串类,已经纳入C++标准之中;
CString(typedef CStringT<TCHAR,StrTraitMFC<TCHAR>>CString)为VisualC++中最常用的字符串类,继承自CSimpleStringT类,主要应用在MFC和ATL编程中,主要数据类型有char(应用于ANSI),wchar_t(Unicode),TCHAR(ANSI与unicode均可);
char*为C编程中最常用的字符串指针,一般以’\0’为结束标志;
二.赋值以及构造
//这里使用了一个console控制台程序作为实验
编译环境:xp32系统 vs2005英文版
#include <iostream>
#include <Windows.h>
#include <atlstr.h>//在非MFC程序下使用CString类必须加的头文件
#include <string>
using namespace std;
int main(void)
{
}
在这里ch是一个字符串指针,自然就没有构造函数,字节赋值就是了,CString和string都是一个类,有构造函数,可以使用基本的字符串构造,包括char*;
Ps:在Win32控制台(console)程序下使用CString有两种方法,第一种:直接添加头文件#include<atlstr.h>,第二种:在solution标签页,右键工程名,选择properties,
弹出text property pages界面,如下图,选择General,在Use of MFC的后面选择 use MFCin a Shared DLL.如下图
如果你使用的是VC++6.0,你可以在菜单栏的 工程->设置中找到此选项。
做完这些后,你还要在程序的前面添加两个头文件,#include<afxwin.h> #include<windows.h>。注意:你必须让#include<afxwin.h> 在#include<windows.h>的前面,这样你就能在程序中使用CString这个类了。
是时候输出来比较下了,在vs默认情况下,使用的是unicode,它在计算机中无论什么时候都是16位的,char*和string都可以用cout直接的输出,但是直接cout CString会出错,你可以在 text propertypages界面Character Set 属性中选择Use Multi-Byte CharacterSet(如果你选择了此选项,你可以使用CString类直接够着string)。或者你也可以使用wcout,实例中使用了这个方法。
3.运算符重载
(1):operator=
我们还是以实例来说明
#include<iostream>
#include <atlstr.h>//在非MFC程序下使用CString类必须加的头文件
#include <string>
using namespace std;
int main(void)
{
}
可以看出,最方便的是string ,可以用CString和char*直接赋值;
其次是CString,可以用char*赋值;
Char*只是一个指针赋值。
(2)operator+
我们再来看看重载的+
#include<iostream>
#include <atlstr.h>//在非MFC程序下使用CString类必须加的头文件
#include <string>
using namespace std;
int main(void)
{
}
首先char*没有+运算,它们之间要连接的话可以用strcat函数。
CString和string都可以和char*进行+运算,但是CString和string之间不能 CString cs =str+cstr和string st = str+cstr都是错误的。
(3)operator+
#include<iostream>
#include <atlstr.h>//在非MFC程序下使用CString类必须加的头文件
#include <string>
using namespace std;
int main(void)
{
}
CString和string都可以和char*进行+=运算
String可以和CString进行+=运算,但是CString+=string就不行
另外string和string之间可以+=运算,CString和CString之间也是可以的。
Char*之间是没有+=运算的,strcat可以实现同样的功能。
(4)operator []
#include<iostream>
#include <atlstr.h>//在非MFC程序下使用CString类必须加的头文件
#include <string>
using namespace std;
int main(void)
{
}
都可以使用[];但是要注意不要越界。越界会发生很严重的错误。
(4)比较
#include<iostream>
#include <atlstr.h>//在非MFC程序下使用CString类必须加的头文件
#include <string>
using namespace std;
int main(void)
{
}
CString与string之间不可以进行比较,但均可以与char*进行比较,并且比较的是值,而不是地址。比较成功,结果返回1或者是0。
三.转换
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
string s(CString.GetBuffer());
- char* string CString 区别
- char string cstring区别
- char* CString string区别
- char* CString string区别
- char* CString string区别
- char* CString string区别
- char string CString的区别
- char[],*char, string, cstring有什么区别?
- char*,string,CString的区别及转换
- CString/string/char 的区别及转化
- CString/string char 区别及其转化
- CString/string char区别及其转化
- char*,char[],string,cstring
- char*,char[],string,cstring
- char*,char[],string,cstring
- char*,char[],string,cstring 转换
- char*,char[],string,cstring 转换
- CString,string,char*
- OpenCV—多通道颜色分离&混合
- hdu_1241_Oil Deposits(DFS)
- 排序算法之希尔排序算法---c++实现
- iOS中NSUserDefaults的使用
- C语言中%d,%o,%f,%e,%x的意义
- char* CString string区别
- 第十七讲 项目二:用指针玩字符串 (事例)
- win平台AndroidStudio 1.0首次安装
- [置顶] 计算机视觉领域的一些牛人博客,超有实力的研究机构等的网站链接
- JqueryEasyUI中的Datagrid获取选中行的数据
- Python中的字符串处理
- 谁能代表8寸平板 :皓丽H8平板 VS iPad mini
- IPtables中SNAT和MASQUERADE的区别
- PAT-最大子列和问题