一.在字符串前加一个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);
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)