首页 技术 正文
技术 2022年11月18日
0 收藏 329 点赞 3,416 浏览 1680 个字

CString和string都是一个类,不同的是CString主要用于MFC或者是ATL编程中,而string则多用于Windows控制台编程中

在实际编程过程中,我们经常用到string或者是CString来保存数据,保存数据的同时,我们也希望把这些保存的数据能够使用输入输出流给输出出来,不过是我们使用Cout标准输出到屏幕,还是使用ofstream输出到文件,我们都需要输出这些对象保存的数据

在实际过程中,我们会遇到三种情况,下面结合遇到的三种情况来说明下如何将CString或者是string对象使用标准的输入输出流输出,特别注意,这里我们讨论的是输入输出流,printf不再讨论之列

1.win32控制台程序:

在Win32控制台程序中,我们如果要使用string的话,需要包含头文件:string或者是命名空间:cstring:

?

12 #include <string.h>#include <cstring>

如果我们直接使用下面的方式输出string的话,在编译时会报错:

?

12 string sTest = "Hello World";cout<<sTest<<endl;

错误的提示可能很多,但是根本的原因是sTest是string的一个对象,而string没有对”<<“进行运算符重载,那么肯定是不能输出的 那么我们可以使用string的成员函数来输出string对象的内容:

?

12 string sTest = "Hello World";cout<<sTest.c_str()<<endl; //使用了string的成员函数c_str();

因此,我们可以得出:

在WIN32控制台中,我们可以使用string的c_str()成员函数类标准输出string的数据内容

2.在MFC程序中:

在MFC中,我们很少用到Cout来输出,用的比较多的输出是文件流输出,因此我们就以文件流的输出CString对象来举例:

?

123 CString sTest = _T("Hello World");ofstream OutToFile("E:\\Users\\Admin\\Desktop\\test.txt",ios::app);OutToFile<<sTest<<endl;

上面的例子可以看出,我们可以直接对CString对象进行文件流输出, 但是如果有的MFC程序不支持的话,那么我们需要使用下面的方法来输出CString对象:

?

123456789101112 CString sTest = _T("Hello World"); ofstream OutToFile("E:\\Users\\Admin\\Desktop\\test.txt",ios::app); wchar_t * chTest = new wchar_t[sTest.GetLength()+1]; //动态申请空间chTest = sTest.GetBuffer(0); //获取CString内容的地址 for(int i = 0; i<sTest.GetLength();i++){    OutToFile<<(char)*(chTest+i);}sTest.ReleaseBuffer();    //调用了GetBuffer后一定要调用ReleaseBuffer释放,否则会出现内存泄露OutToFile.close();

我们使用CString的GetBuffer得到数据的地址,然后直接输出就可以了

3.ATL项目中

前面有提到过ATL项目,他不同于MFC那么方便,要想输出CString对象的话,需要是用到ATL的宏,

?

1234 BSTR bstrContext = OLESTR(" 内容为:");  //使用宏OLESTR对BSTR变量赋初值CString sContext ;sContext = COLE2T(bstrContext);  //使用COLE2T将BSTR转换为CStringCout<<(CT2A)sContext  //使用CT2A宏来输出sContext的内容

从上面的示例代码我们了可以知道:

在ATL项目中,可以使用CT2A宏来输出CString对象

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,000
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,512
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,358
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,141
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,771
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,849