我想将LPTSTR转换为string或char *,以便能够使用ofstream将其写入文件。
任何想法?
答案 0 :(得分:3)
使用T2A宏。
答案 1 :(得分:1)
其他线程中提供的大多数解决方案都不必要地转换为过时的编码而不是Unicode编码。只需使用reinterpret_cast<const char*>
编写UTF-16文件,或使用WideCharToMultiByte
转换为UTF-8。
为了稍微偏离问题,现在使用LPTSTR
代替LPWSTR
并没有多大意义,因为旧的9x系列Windows完全过时且不受支持。只需使用LPWSTR
和随附的“宽字符”(即UTF-16代码单元)类型,例如WCHAR
或wchar_t
。
以下是一个示例(我希望)写入UTF-16或UTF-32(后者在Linux / OS X上):
#include <fstream>
#include <string>
int main() {
std::ofstream stream("test.txt"); // better use L"test.txt" on Windows if possible
std::wstring string = L"Test\n";
stream.write(reinterpret_cast<const char*>(string.data()), string.size() * sizeof(wchar_t));
}
答案 2 :(得分:0)
IIUC,LPTSTTR
可能指向char
字符串或wchar_t
字符串,具体取决于预处理程序指令。如果这是正确的,那么您需要在std::ofstream
和std::wofstream
之间切换,具体取决于预处理器指令。
看一下 this answer 。它处理控制台流之间的切换,具体取决于TCHAR
,但该方案也很容易适用于文件流。