我试图捕获应用程序argc
& argv
使用以下代码:
int wx_argc = wxGetApp().argc;
wchar_t** wx_argv = wxGetApp().argv;
然后我需要将它传递给argv
类型中需要char**
的另一个函数,
如何将wx_argv
从wchar_t**
类型转换为char**
?
答案 0 :(得分:0)
使用标准功能:
#include <stdlib.h>
wchar_t* p = L"Ciao Mondo";
char v[50];
wcstombs(v, p, 10);
答案 1 :(得分:0)
正确的答案取决于您需要使用哪个编码的窄(char*
)字符串。如果这是当前语言环境的编码,那么您确实可以使用wcstombs()
,如上所述通过@AngeloDM。否则,您可以直接使用某些wxMBConv
派生类的方法(例如wxMBConvUTF8
或wxMBConvUTF16
用于特定编码,或wxCSConv
将尝试转换为任何支持的字符集你指定)或通过wxString。
在任何情况下,这只需要处理从wchar_t*
到char*
的转换,您仍然需要分配自己的argc
大小的char**
数组并循环所有条目逐个转换。