我正在尝试将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文档,LPSTRtypedefchar *:
typedef char* PSTR, *LPSTR;

因此,您可以尝试以下操作:
const char *ch = "some chars ...";
LPSTR lpstr = const_cast<LPSTR>(ch);

10-06 11:16