我正在尝试将const char *转换为LPTSTR。但我不想使用USES_CONVERSION来执行该操作。
以下是我用于使用USES_CONVERSION进行转换的代码。有没有一种方法可以使用sprintf或tcscpy等进行转换?
USES_CONVERSION;
jstring JavaStringVal = (some value passed from other function);
const char *constCharStr = env->GetStringUTFChars(JavaStringVal, 0);
LPTSTR lpwstrVal = CA2T(constCharStr); //I do not want to use the function CA2T..
最佳答案
LPTSTR
有两种模式:
如果定义了LPWSTR
,则为UNICODE
,否则为LPSTR
。
#ifdef UNICODE
typedef LPWSTR LPTSTR;
#else
typedef LPSTR LPTSTR;
#endif
或通过另一种方式:
LPTSTR is wchar_t* or char* depending on _UNICODE
如果您的
LPTSTR
是非unicode:根据MSDN Full MS-DTYP IDL文档,
LPSTR
是typedef
的char *
:typedef char* PSTR, *LPSTR;
因此,您可以尝试以下操作:
const char *ch = "some chars ...";
LPSTR lpstr = const_cast<LPSTR>(ch);