我的编译器和运行环境不支持 C++11 ,如何在Unicode 编译环境中,LPCTSTR 转string
时间: 2024-04-09 15:33:33 浏览: 16
如果你的编译器和运行环境不支持 C++11 或更高版本的标准库,你可以使用 Windows API 提供的函数来进行 `LPCTSTR` 到 `std::string` 的转换。
下面是一个示例代码,演示如何在 Unicode 编译环境中将 `LPCTSTR` 转换为 `std::string`:
```cpp
#include <string>
#include <windows.h>
std::string LPCTSTRToString(LPCTSTR lpctstr) {
int length = WideCharToMultiByte(CP_UTF8, 0, lpctstr, -1, nullptr, 0, nullptr, nullptr);
std::string str(length - 1, '\0');
WideCharToMultiByte(CP_UTF8, 0, lpctstr, -1, &str[0], length, nullptr, nullptr);
return str;
}
```
这里使用了 `WideCharToMultiByte` 函数将宽字符转换为 UTF-8 字符串。首先,调用一次 `WideCharToMultiByte` 获取转换后字符串的长度,然后创建一个足够容纳转换后字符串的 `std::string` 对象。最后,再次调用 `WideCharToMultiByte` 进行实际的转换。
使用上述示例代码,你可以调用 `LPCTSTRToString` 函数将 `LPCTSTR` 转换为 `std::string`。例如:
```cpp
LPCTSTR lpctstr = L"Hello, world!";
std::string str = LPCTSTRToString(lpctstr);
```
现在,`str` 将包含转换后的 UTF-8 字符串。
请注意,这种方法依赖于 Windows API,并且在 Windows 平台上才适用。