C++ 字符串转换

一.在字符串前加一个L作用:  

  如 L"我的字符串" 表示将ANSI字符串转换成unicode的字符串,就是每个字符占用两个字节。  
  strlen("asd") = 3;   

  strlen(L"asd") = 6;  


二.LPCTSTR和LPCWSTR

LPCTSTR不是一个类型,而是两种类型:LPCSTR和LPCWSTR其中之一。会根据你当前程序是否使用UNICODE字符集来变成那二者之一。如果使用UNICODE字符集,则LPCTSTR = LPCWSTR,否则LPCTSTR = LPCSTR。

标准库的std::string转换成LPCSTR很简单:直接调用c_str()即可。例:
std::string a="abc";
LPCSTR str = a.c_str();

标准库还有一个wstring,代表宽字符的string,std::wstring转换成LPCWSTR也一样很简单:
std::wstring a = L"abc";
LPCWSTR str = a.c_str();

如果要是std::string转换成LPCWSTR或者std::wstring转换成LPCSTR那就比较麻烦了,需要调用MultiByteToWideChar或WideCharToMultiByte进行字符集之间的转换。不过大多数时候不需要这种交叉转换,一个程序一般只会使用一种字符集。


三.int转化为string

1.C++11中有一个to_string方法std::to_string是C++标准(2011年)的最新版本中引入的功能。旧的编译器可能不支持它。
2.只能用笨方法,如下:
int转string
int n = 0;
std::stringstream s;
std::string str;
s<<n;
s>>str;

也可以这样:
int num = 100;
char str[25];
itoa(num, str, 10);

string转int
std::string str = "123";
int n = atoi(str.c_str());

四.int转LPCWSTR

include<stdlib.h>
using std::wstring;

LPCWSTR to INT:

LPCWSTR wstr = L"abc";
wstring tempstr( wstr);
int value = _wtoi( tempstr.c_str());

INT to LPCWSTR:


int value = 123;
wchar_t cha[10];
_itow_s( value, cha, 10, 10);
函数第一个参数是要转换的整数, 
第二个参数是定义好的wchar_t型数组, 
第三个参数是要占用数组中的几个位置(注:比数字位置多1), 
第四个参数是数字类型(二进制就是2,十进制就是10)



原文地址:https://www.cnblogs.com/kevinWu7/p/10163535.html