C++类型转换,c++四种类型转换每种的使用场景
各种类型的转换,期待您的加入和共同提高-blood master-博客花园
c各种类型的转换,期待您的加入,共同提高。
1.int和char*之间的转换:
inta toi(const char * str);
例子
char * ch= 152
int num=atoi(ch);
输出:num=152
char* itoa(int Val,char * DstBuf,int Radix);
例子
int数=123456789;
char string[25];
char * ch
ch=itoa(数字,字符串,10);
输出:ch="123456" string="123456 "
2.2.long和char之间的转换*
char* ltoa(long _Val,char * _DstBuf,int _ Radix);
long atol(const char * Str);
3.double和char*转换
双atof(const char * String);
这里没有对应的ftoa,所以由sprintf实现。
char ch[50];
double dbl=12345.123
sprintf(ch, %f ,dbl);
输出:ch="12345.1230000 "
4.char *和wchar_t*之间的转换
size_t mbstowcs(wchar_t *wcstr,const char *mbstr,size _ t count);
char * ch
ch=我是学生;
wchar _ t wch[50];
int size=mbstowcs(wch,ch,13);
输出:size=12;wch=我是学生;
wchar_t* wch=L 我是学生;
char ch[50];
int size=wcstombs(ch,wch,13);
输出:size=12;ch=我是学生;
5.将const char*转换为char*。在string和char*之间转换时经常使用这种转换,string.c_str()得到const char*
const_cast char* ( const char*)
6.汉字问题。当fstream打开文件时,如果vs2008和vs2003以上的文件路径中有中文字符,则无法打开文件。解决方案:
locale:global(locale(" ");//在文件打开之前
fstream . open(…);
locale:global(locale(" C "));//文件打开后,如果不使用该语句恢复默认设置,后续的cout会乱码。
7.字符集之间的转换:LPSTR LPWSTR
Wstr至LPWSTR
LPTSTR pp=L 我是一个学生;
LPSTR p=new CHAR[100];
WideCharToMultiByte(CP_ACP,0,pp,-1,p,100,NULL,NULL);
Output: p=我是一个strud ent ;
LPSTR至LPWSTR
LPWSTR pp=新TCHAR[100];
LPSTR p=我是一个strud ent ;
MultiByteToWideChar(CP_ACP,0,p,-1,pp,100);
Output: pp=我是一个strud ent ;
注意:如果WideCharToMultiByte和MultiByteToWideChar中的第六个参数设置为零,则不进行转换,直接返回对应转换所需的存储区大小。因此,在实际使用中,往往是这样的:
LPSTR p=我是一个strud ent ;
int mm=MultiByteToWideChar(CP _ ACP,0,p,-1,NULL,0);
LPWSTR pp=新TCHAR[mm];
MultiByteToWideChar(CP_ACP,0,p,-1,pp,mm);
删除[]PP;
8.获取当前时间并将其转换为字符串:
time_t时间;
ltime=time(0);
char tmp[64];
ZeroMemory(tmp,0);
strftime( tmp,sizeof(tmp), %Y/%m/%d %X ,localtime( ltime))
output:tmp= 2011/11/18 10:14:07 ;
9.9之间的转换。这里不解释CString和LPSTR和LPWSTR。CString的使用根据不同的项目设置自动调整为CStringW,CStringA分别对应LPWSTR和LPSTR,在相应的条件下可以直接调用。其实根本问题是LPSTR和LPWSTR之间的转换。网上有很多关于CString转换的帖子,可以直接参考。如果你发现网上那些CString转换方法和你不搭调,不要抱怨他们胡说八道,只是他们的项目设置和你的不一样。详见:7。
10.补充:static _ cast()const _ cast()reinterpret _ cast dynamic _ cast()。这四个具体用法谷歌都可以用,很多时候它们的功能也很别致。
c类型转换是一个严肃而令人抓狂的问题,解决这些细节往往需要时间。毕竟本文列举的案例有限,通用类型还未涉及。希望看了这篇文章的你能补充一下。希望这篇文章和这篇文章的评论能解决以后大部分类型转换的问题,作为参考书使用。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。