string、wstring、cstring、 char、 tchar、int、dword互转

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转CString
CString str( filename.c_str() ); 


12》Cstring 转 wstring
 //CString转std::wstring
std::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;

你可能感兴趣的:(string、wstring、cstring、 char、 tchar、int、dword互转)