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;
 

声明: 本文采用 BY-NC-SA 协议进行授权. 转载请注明转自: string、wstring、cstring、 char、 tchar、int、dword互转
More Articles about

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值