string、wstring、cstring、 char、 tchar、int、dword互转
来源:互联网 发布:win7怎样关闭网络共享 编辑:程序博客网 时间:2024/05/21 17:21
最近编程一直头痛字集中类型的转化,明知都可以转却总是记不住,不断的上网查来查去,在这里小结一下。以备以后方便使用,当然有些方法可能不是最新的,或者最简单的,但是对于自己已经了解的使用起来应该方便的多:
1》string 转 wstring
wstring s2ws(const string& s){ _bstr_t t = s.c_str(); wchar_t* pwchar = (wchar_t*)t; wstring result = pwchar; return result;}
2》wstring 转 string
string ws2s(const wstring& ws){ _bstr_t t = ws.c_str(); char* pchar = (char*)t; string result = pchar; return result;}
3》string 转 cstring
CString.format("%s", string.c_str()); //用c_str()确实比data()要好.
或:
CString StringToCString(string str){ CString result; for (int i=0;i<(int)str.length();i++) { result+=str[i]; } return result;}
4》cstring 转 string
void ConvertCString2string(CString& strSrc,std::string& strDes){ #ifndef UNICODE strDes = strSrc; #else USES_CONVERSION; strDes = W2A(strSrc.LockBuffer()); strSrc.UnlockBuffer(); #endif}
或:
string s(CString.GetBuffer()); ReleaseBuffer();GetBuffer()后一定要ReleaseBuffer(),否则就没有释放缓冲区所占的空间.
或:
string CStringToString(CString cstr){ string result(cstr.GetLength(),'e'); for (int i=0;i<cstr.GetLength();i++) { result[i]=(char)cstr[i]; } return result;}
5》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());
或:
char *p = new char[sring的长度+1];p[string的长度]='/0';//但是要注意最后赋值'/0'!!! char * StringToChar(string &str){ int len=str.length(); char * p= new char[len+1]; for (int i=0;i<len;i++) { p[i]=str[i]; } p[len]='/0';}
6》char* 转 string
string s(char *); //你的只能初始化,在不是初始化的地方最好还是用assign();string CharToString(char*arr,int count){ string result(arr,4); return result;}//string是ansi编码字符char//TCHAR是unicode编码字符wchar_t
7》string 转 TCHAR *
/* wBuf 申明为指针即可。*/wchar_t *chr2wch(const char *buffer){ size_t len = strlen(buffer); size_t wlen = MultiByteToWideChar(CP_ACP, 0, (const char*)buffer, int(len), NULL, 0); wchar_t *wBuf = new wchar_t[wlen + 1]; MultiByteToWideChar(CP_ACP, 0, (const char*)buffer, int(len), wBuf, int(wlen)); return wBuf;}
8》TCHAR * 转 string
char * wch2chr(LPCTSTR lpString){ // Calculate unicode string length. UINT len = wcslen(lpString)*2; char *buf = (char *)malloc(len); UINT i = wcstombs(buf,lpString,len); return buf;}
9》char * 转 int
/*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);
10》int 转 char*
在stdlib.h中有个函数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(); }
11》wstring 转 Csting
//std::wstring转CStringCString str( filename.c_str() );
12》Cstring 转 wstring
//CString转std::wstringstd::wstring str = filename.GetString();
13》Cstring 转 char *
CString cstr(asdd);const char* ch = (LPCTSTR)cstr;//举例:CString str= "i am good "; char* lp=str.GetBuffer(str.GetLength());
15》TCHar 转 char
*********************************************************************** * 函数: THCAR2Char * 描述:将TCHAR* 转换为 char* *********************************************************************** char* CPublic::THCAR2char(TCHAR* tchStr) { int iLen = 2*wcslen(tchStr);//CString,TCHAR汉字算一个字符,因此不用普通计算长度 char* chRtn = new char[iLen+1] wcstombs(chRtn,tchStr,iLen+1);//转换成功返回为非负值 return chRtn; }
16》char 转 tchar
定义了UNICODE宏之后,TCHAR就是宽字符wchar_t,否则TCHAR跟char是一样的^_
str.ReleaseBuffer();
17》int 转 CString
int iint;CString csstr;csstr.Format("%d",iint);
18》char* 转 CString
CString.format("%s", char*); CString strtest; char * charpoint; charpoint="give string a value"; strtest=charpoint; //直接付值
19》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);
20》int 转 string
#include <iostream>#include <string>using namespace std;int main(){ int n = 65535; char t[256]; string s; sprintf(t, "%d", n); s = t; cout << s << endl; return 0;}
或:
#include <iostream>#include <string>#include <sstream>using namespace std; int main(){ int n = 65535; strstream ss; string s; ss << n; ss >> s; cout << s << endl; return 0;}
或:
//1.) String s = String.valueOf(i);//2.) String s = Integer.toString(i); //3.) String s = "" + i;
21》string 转 wchar_t
string sName = "string -> wchar_t";wchar_t * wName = new wchar_t[sName.size()];swprintf(wName, L"%S ", sName.c_str()); //注意大写S。。
22》wchar_t 转 string
wchar_t wchart[] = L"wchar_t -> string";wstring ws = wchart;_bstr_t t = ws.c_str();char* pchar = (char*)t;string result = pchar;
原文:http://www.tiham.com/2011/12/string-wstring-cstring-char-tchar-int-dword.html
- string、wstring、cstring、 char、 tchar、int、dword互转
- string、wstring、cstring、 char、 tchar、int、dword互转
- string、wstring、cstring、 char、 tchar、int、dword互转
- string、wstring、cstring、 char、 tchar、int、dword互转
- string、wstring、cstring、 char、 tchar、int、dword互转
- string、wstring、cstring、 char、 tchar、int、dword转换方法
- string、wstring、cstring、 char、 tchar、int、dword转换方法
- string、wstring、cstring、 char、 tchar、int、dword转换方法
- string、wstring、cstring、 char、 tchar、int、dword转换方法
- string、wstring、cstring、 char、 tchar、int、dword转换方法
- string、wstring、cstring、 char、 tchar、int、dword转换方法
- string、wstring、cstring、 char、 tchar、int、dword转换方法
- string、wstring、cstring、 char、 tchar、int、dword转换方法
- string、wstring、cstring、 char、 tchar、int、dword转换方法
- 知识记录:string、wstring、cstring、 char、 tchar、int、dword转换方法
- c++ 类型转换string、wstring、cstring、 char、 tchar、int、dword(三)
- string、wstring、cstring、 char、 tchar、int转换方法
- string、wstring、cstring、 char、 tchar、int转换方法
- 网店页面该用什么颜色?
- 智力题 一元钱去哪里了
- 高水位线的压缩
- 深入new/delete:New的3种形态
- 【基础知识】浅谈HTTP中Get与Post的区别
- string、wstring、cstring、 char、 tchar、int、dword互转
- wdOS 安装教程
- 黑马程序员——>第七天<面向对象(继承-抽象类-接口)>
- Mysql----浅入浅出之JDBC连接
- windows平台下vlc编译之一:编译环境构建(2008.12.03更新)
- Linux设备驱动的Hello World—LED驱动
- QRCODE的QrcodeVersion问题
- hdu 1084 What Is Your Grade?
- BIOS和DOS建立的中断向量表