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进行字符集之间的转换。不过大多数时候不需要这种交叉转换,一个程序一般只会使用一种字符集。
标准库的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进行字符集之间的转换。不过大多数时候不需要这种交叉转换,一个程序一般只会使用一种字符集。
本文解释了LPCTSTR的含义及其如何根据程序使用的字符集(UNICODE或非UNICODE)变化为LPCSTR或LPCWSTR。同时介绍了如何将std::string和std::wstring转换为LPCSTR或LPCWSTR,并讨论了不同字符集间的转换方法。
2434

被折叠的 条评论
为什么被折叠?



