C++中CStringstringchar*char之间字符转换的示例分析

小编给大家分享一下C++中CString string char* char之间字符转换的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

网站建设哪家好,找创新互联!专注于网页设计、网站建设、微信开发、成都小程序开发、集团企业网站建设等服务项目。为回馈新老客户创新互联还提供了独山免费建站欢迎大家使用!

首先解释下三者的含义

CString 是一种很有用的数据类型。它们很大程度上简化了MFC中的许多操作(适用于MFC框架),使得MFC在做字符串操作的时候方便了很多。需要包含头文件#include

C++是字符串,功能比较强大。要想使用标准C++中string类,必须要包含#include // 注意是,不是,带.h的是C语言中的头文件。Char * 专门用于指以'\0'为结束的字符串.

以下方法来进行转换:

// CharConvert.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include
#include
#include
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
	//此方法适用于“多字节” 否则会出现'strcpy' : cannot convert parameter 2 from 'unsigned short *' to 'const char *'
	/*CString str("Hello zzu");
	cout<<"the CString is "<

同时需要注意的是,我们在平成写程序时,最好搞清我们的编译环境中的编码方式,不同的编码方式可以会导致一些字符转换失败,当我们编程开始,就要想好在哪个编码方式下进行,以免最后出现换编码方式了,代码却出现很多错误(很让人头疼),比如sqlite数据库中的中文字符乱码问题就是由于编码方式和数据库中默认的编码方式不一致。这点在我们写程序时一定谨记。

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

一、    将CString类转换成char*(LPSTR)类型

方法一,使用强制转换。例如:

CString theString( "This  is a test" );
LPTSTR lpsz =(LPTSTR)(LPCTSTR)theString;

方法二,使用strcpy。例如:

CString theString( "This  is a test" );
LPTSTR lpsz = new TCHAR[theString.GetLength()+1];
_tcscpy(lpsz, theString);

方法三,使用CString::GetBuffer。例如:

CString s(_T("This is a  test "));
LPTSTR p = s.GetBuffer();
// 在这里添加使用p的代码
if(p != NULL) *p =  _T('\0');
s.ReleaseBuffer();
// 使用完后及时释放,以便能使用其它的CString成员函数

CString str = "ABCDEF";
char *pBuf = str,GetBuffer( 0 );
str.ReleaseBuffer();

二、     string转char*

string 是c++标准库里面其中一个,封装了对字符串的操作
把string转换为char* 有3种方法:
1。data(),返回没有”\0“的字符串数组
如:
string str="abc";
char  *p=str.data();
2.c_str 返回有”\0“的字符串数组
如:string  str="gdfd";
    char *p=str.c_str();
3 copy
比如
string  str="hello";
char p[40];
str.copy(p,5,0); //这里5,代表复制几个字符,0代表复制的位置
*(p+5)='\0';  //要手动加上结束符
cout < < p;

三、     字符串string转换为其它数据类型

temp="123456";
1)短整型(int)
i =  atoi(temp);
2)长整型(long)
l =  atol(temp);
3)浮点(double)
d =  atof(temp);
string s; d= atof(s.c_str());
4)BSTR变量
BSTR bstrValue =  ::SysAllocString(L"程序员");
...///完成对bstrValue的使用
SysFreeString(bstrValue);
5)CComBSTR变量
CComBSTR类型变量可以直接赋值
CComBSTR  bstrVar1("test");
CComBSTR bstrVar2(temp);
6)_bstr_t变量
_bstr_t类型的变量可以直接赋值
_bstr_t  bstrVar1("test");
_bstr_t bstrVar2(temp);

四、     Char*转换为string

如果要把一个char 转换成string, 可以使用 string s(char  *);

五、string 转CString 

CString.format("%s",  string.c_str());

六、char 转CString 

CString.format("%s", char*);

七、     CString -> string

string  s(CString.GetBuffer()); 
GetBuffer()后一定要ReleaseBuffer(),否则就没有释放缓冲区所占的空间.

八、CString互转int

将字符转换为整数,可以使用atoi、_atoi64或atol。 
而将数字转换为CString变量,可以使用CString的Format函数。如 

CString s; 
int i = 64; 
s.Format("%d", i)

以上是“C++中CString string char* char之间字符转换的示例分析”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注创新互联行业资讯频道!


分享标题:C++中CStringstringchar*char之间字符转换的示例分析
路径分享:http://ybzwz.com/article/jodehd.html