VC数据类型转换 使用vc一段时间了发现VC的数据类型转换挺烦人了,特别是unicode环境下的类型转换不知道有没有高手在这方面有研究的烦请分享您宝贵的经验谢谢 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 C++标准函数库》中说的 有三个函数可以将字符串的内容转换为字符数组和C—string 1.data(),返回没有”\0“的字符串数组 2,c_str(),返回有”\0“的字符串数组 3,copy() .................................................................int 转 CString:CString.Format("%d",int);...............................string 转 CString CString.format("%s", string.c_str()); 用c_str()确实比data()要好. .......................................char* 转 CString CString.format("%s", char*); CString strtest; char * charpoint; charpoint="give string a value"; strtest=charpoint; //直接付值...................................................................CString 转 intCString ss="1212.12"; int temp=atoi(ss); //atoi _atoi64或atol将字符转换为整数,可以使用atoi、_atoi64或atol。 int int_chage = atoi((lpcstr)ss) ;或: CString str = "23"; UINT uint; sscanf(str, "%d", uint);..............................string 转 int..............................char* 转 int #include <stdlib.h> int atoi(const char *nptr); long atol(const char *nptr); long long atoll(const char *nptr); long long atoq(const char *nptr); ...................................................................CString 转 stringstring s(CString.GetBuffer()); GetBuffer()后一定要ReleaseBuffer(),否则就没有释放缓冲区所占的空间. ..........................................int 转 string ..........................................char* 转 string string s(char *); 你的只能初始化,在不是初始化的地方最好还是用assign()....................................................................CString 转 char * CString strtest="wwwwttttttt";charpoint=strtest.GetBuffer(strtest.GetLength()); CString转换 char[100] char a[100]; CString str("aaaaaa"); strncpy(a,(LPCTSTR)str,sizeof(a));CString str="aaa"; char* ch; ch=(char*)(LPCTSTR)str;..........................................int 转 char *在stdlib.h中有个函数itoa() itoa的用法: itoa(i,num,10); i 需要转换成字符的数字 num 转换后保存字符的变量 10 转换数字的基数(进制)10就是说按照10进制转换数字。还可以是2,8,16等等你喜欢的进制类型 原形:char *itoa(int value, char* string, int radix); 实例: #include "stdlib.h" #include "stdio.h" main() { int i=1234; char s[5]; itoa(i,s,10); printf("%s",s); getchar(); }..........................................string 转 char * char *p = string.c_str(); string aa("aaa"); char *c=aa.c_str(); string mngName; char t[200]; memset(t,0,200); strcpy(t,mngName.c_str());...................................................................标准C里没有string,char *==char []==string可以用CString.Format("%s",char *)这个方法来将char *转成CString。要把CString转成char *,用操作符(LPCSTR)CString就可以了。cannot convert from 'const char *' to 'char *' 一般UNICODE有前缀t 具体的函数名称只要你知道ANSI版本的 搜一下就OK了 UTF-8 转 Unicode, Unicode 转 GBK, UTF-8 转 GBK#include <windows.h>#include <stdio.h>void main() {//unsigned char utf8[] = "\xe8\x80\x81\xe5\xbe\x90";unsigned char unicode[] = "\x01\x80\x90\x5f";unsigned char ansi[] = "\xc0\xcf\xd0\xec";int len; //UTF-8转UNICODElen = MultiByteToWideChar(CP_UTF8, 0, (LPCSTR)utf8, -1, NULL,0);WCHAR * wszUtf8 = new WCHAR[len+1];memset(wszUtf8, 0, len * 2 + 2);MultiByteToWideChar(CP_UTF8, 0, (LPCSTR)utf8, -1, wszUtf8, len);MessageBoxW(NULL, (const wchar_t*)wszUtf8, NULL, MB_OK);//UNICODE转ANSI,实际上经过两次转换 UTF-8 已经变成了 GBK 编码len = WideCharToMultiByte(CP_ACP, 0, wszUtf8, -1, NULL, 0, NULL, NULL); char *szGBK=new char[len + 1];memset(szGBK, 0, len + 1);WideCharToMultiByte (CP_ACP, 0, wszUtf8, -1, szGBK, len, NULL,NULL);MessageBoxA(NULL, (const char*)szGBK, NULL, MB_OK);delete[] szGBK;delete[] wszUtf8;} 关于登陆验证 有关非模态对话框的问题 我学习VC时,用CRectTracker改进的类,具有限制在一个RECT中和蚂蚁线功能,贴出来,共分享! 请问谁有MSDN的中文版的吗? 调用包中的存储过程的问题? DLL问题!急!!!!! 学好VC必须要先学好C++吗? 怎么让CFORMVIEW的控件在ONSIZE时随之变化.? 如何改变STATIC控件的内容? Help!!!在哪里可以找到免费的图形浏览工具包 大虾快来帮忙啊,搞了两天了 如何通过当前窗口的窗口句柄得到它所属进程的进程名(xx.exe)
有三个函数可以将字符串的内容转换为字符数组和C—string
1.data(),返回没有”\0“的字符串数组
2,c_str(),返回有”\0“的字符串数组
3,copy()
.................................................................
int 转 CString:
CString.Format("%d",int);
...............................
string 转 CString
CString.format("%s", string.c_str());
用c_str()确实比data()要好.
.......................................
char* 转 CString
CString.format("%s", char*); CString strtest;
char * charpoint;
charpoint="give string a value";
strtest=charpoint; //直接付值
...................................................................
CString 转 int
CString ss="1212.12";
int temp=atoi(ss); //atoi _atoi64或atol将字符转换为整数,可以使用atoi、_atoi64或atol。
int int_chage = atoi((lpcstr)ss) ;
或:
CString str = "23";
UINT uint;
sscanf(str, "%d", uint);
..............................
string 转 int
..............................
char* 转 int
#include <stdlib.h> int atoi(const char *nptr);
long atol(const char *nptr);
long long atoll(const char *nptr);
long long atoq(const char *nptr);
...................................................................
CString 转 string
string s(CString.GetBuffer());
GetBuffer()后一定要ReleaseBuffer(),否则就没有释放缓冲区所占的空间.
..........................................
int 转 string
..........................................
char* 转 string
string s(char *);
你的只能初始化,在不是初始化的地方最好还是用assign().
...................................................................
CString 转 char *
CString strtest="wwwwttttttt";
charpoint=strtest.GetBuffer(strtest.GetLength()); CString转换 char[100]
char a[100];
CString str("aaaaaa");
strncpy(a,(LPCTSTR)str,sizeof(a));CString str="aaa";
char* ch;
ch=(char*)(LPCTSTR)str;
..........................................
int 转 char *在stdlib.h中有个函数itoa()
itoa的用法:
itoa(i,num,10);
i 需要转换成字符的数字
num 转换后保存字符的变量
10 转换数字的基数(进制)10就是说按照10进制转换数字。还可以是2,8,16等等你喜欢的进制类型
原形:char *itoa(int value, char* string, int radix);
实例:
#include "stdlib.h"
#include "stdio.h"
main()
{
int i=1234;
char s[5];
itoa(i,s,10);
printf("%s",s);
getchar();
}
..........................................
string 转 char *
char *p = string.c_str(); string aa("aaa");
char *c=aa.c_str(); string mngName;
char t[200];
memset(t,0,200);
strcpy(t,mngName.c_str());
...................................................................
标准C里没有string,char *==char []==string可以用CString.Format("%s",char *)这个方法来将char *转成CString。要把CString转成char *,用操作符(LPCSTR)CString就可以了。cannot convert from 'const char *' to 'char *'
#include <stdio.h>void main() {//
unsigned char utf8[] = "\xe8\x80\x81\xe5\xbe\x90";
unsigned char unicode[] = "\x01\x80\x90\x5f";
unsigned char ansi[] = "\xc0\xcf\xd0\xec";int len; //UTF-8转UNICODE
len = MultiByteToWideChar(CP_UTF8, 0, (LPCSTR)utf8, -1, NULL,0);
WCHAR * wszUtf8 = new WCHAR[len+1];
memset(wszUtf8, 0, len * 2 + 2);
MultiByteToWideChar(CP_UTF8, 0, (LPCSTR)utf8, -1, wszUtf8, len);MessageBoxW(NULL, (const wchar_t*)wszUtf8, NULL, MB_OK);//UNICODE转ANSI,实际上经过两次转换 UTF-8 已经变成了 GBK 编码
len = WideCharToMultiByte(CP_ACP, 0, wszUtf8, -1, NULL, 0, NULL, NULL);
char *szGBK=new char[len + 1];
memset(szGBK, 0, len + 1);
WideCharToMultiByte (CP_ACP, 0, wszUtf8, -1, szGBK, len, NULL,NULL);MessageBoxA(NULL, (const char*)szGBK, NULL, MB_OK);delete[] szGBK;
delete[] wszUtf8;}