各种类型转化总结

各种类型转化 

文章简介:本文总结了各种常见类型与编码类型的转化,对于比较复杂的转化,文章末尾给出了工程链接。

一、标准类型转化

1、对于intfloatstringchar*之间的转化可以使用强制转化,或者标准库函数进行。

二、CStringstring类型的区别与转化

区别:

1、首先要明确,标准C中是不存在string类型的string是标准C++扩充字符串操作的一个类。但是我们知道标准C中有string.h这个头文件,这里要区分清楚

2、string.h这个头文件中定义了一些我们经常用到的操作字符串的函数,如:strcpystrcatstrcmp等等,但是这些函数的操作对象都是char*指向的字符串。

3、C++string类操作对象是string类型字符串,该类重装了一些运算符,添加了一些字符串操作成员函数,使得操作字符串更加方便。

转化:

对于CString与其他类型的转化方法很多,但其实都殊途同归,朝着一个方向即将类型首先转化为char*类型,因为char*是不同类型之间的桥梁char*类型可以直接赋值给CStringstring 

1、CString->char*

CString cstr = "ksarea";
char* ptemp = cstr.getbuffer(0);
char* str;
strcpy(str,ptemp);

cstr.releasebuffer(-1);

2char*->CString

char* str = "lovesha";

CString cstr = str; //string类型不能直接赋值给CString,char*类型可以

3、string->const char*

 c_str()方法,

如:string str=“world”;

const char *p = str.c_str();//同上,要加const或者等号右边用char*

const char*->char*

char* p1=const_cast<char*>(p)        

4、char* ->string

char* str = "lovesha";

string cstr = str;

//

5、CString to string

1>//CString to string,要看你的CString用的是UNICODE还是非UNICODE

UNICODE就简单了:

    CString cstr = "ksarea";

char* ptemp = cstr.getbuffer(0);

string str=ptemp;

法二、str = LPCSTR(cstr);

2、UNICODE就麻烦点,需要特定函数才能做到

6string to CString

string str="abcde";
CString cstr(str.c_str())

三、 CString是对string(字符串)wstring(宽字符串)的一个封装,常用在mfc.用来解决编码问题的.

1、  string或者wstring转换到CString:

要把string或者wstring类型的数据存放到CString,直接调用string::c_str()或者wstring::c_str()就行了.

2、CString转换到string或者wstring

CString::GetBuffer(0)就能转换到string或者wstring.如果编译时候定义了UNICODE,则转换到wstring;如果未定义,则转换到string.所以若定义了UNICODE且要转到string话就需要函数来处理了。

3、CString 转数字

 _ttoi()这是个宏,如果定义了UNICODE,则等价于_wtoi(),否则对应atoi(),要使用,需要引入<stdlib.h>

CStringint的转换

int i = 123;
CString str;
str.format( "%d",i);                   //int->CString 其他的基本类型转化类似
i = atoi(str);

4、数字转CString

    int Value = 0;

    CString::Format(_T("%d") , Value);

5、string 转数字

stringint的转换

C语言转换形式

string str;  

int i = atoi(str.c_str()); 

C++转换形式(C++11):

string str;  

int i = std::stoi(str);  

6、数字转string

intstring(C++11):

std::string to_string( int value );

 

四、CString LPCTSTR LPTSTR

1、CString LPCTSTR 基本可以通用。

CString LPCTSTR:

CString cStr;

const char *lpctStr=(LPCTSTR)cStr;

LPCTSTRCString:

LPCTSTR lpctStr;

CString cStr=lpctStr;

2、 LPTSTR不同,它是 char*, 意味着你随时可能修改里面的数据,这就需要内存管理(如字符串变长,原来的存贮空间就不够了,则需要重新调整分配内存)。所以 不能随便的将 const char* 强制转换 char* 使用。 比如一个函数接受一个字符串参数的输入,里面对该字符串又没有任何的修改,那么该参数就应该定义成 const char*, 但是很多初学者弄不清const地用法,或者是懒, 总之就是随意写成了 char* 。 这样子传入CString时就需要强制的转换一下。CString 转换到 LPTSTR (char*), 预定的做法是调用CStringGetBuffer函数,使用完毕之后一般都要再调用ReleaseBuffer函数来确认修改

 

相应工程连接如下:

1、http://download.csdn.net/download/zhangyuanxuevaq/10268730

本工程总结了:string2charx、string2charx、transchar、WChar2Ansi、wstring2string、wstring Utf_8ToUnicode、 GBKToUTF8几种类型的转化。
2、http://download.csdn.net/download/zhangyuanxuevaq/10268722
本资源总结了AnsiToUnicode、UnicodeToAnsi、UnicodeToUTF8、U8ToUnicode

3、http://download.csdn.net/download/zhangyuanxuevaq/10268690

本工程总结了:string2charx、string2charx、transchar、WChar2Ansi、wstring2string、wstring Utf_8ToUnicode、 GBKToUTF8几种类型的转化。

注:本篇博文为自己学习过程的心得笔记,如有内容雷同,还请见谅,谢谢!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值
>