wxWidgets将wchar_t **转换为char **

时间:2014-07-06 06:27:00

标签: c++ type-conversion wxwidgets

我试图捕获应用程序argc& argv使用以下代码:

int       wx_argc = wxGetApp().argc;
wchar_t** wx_argv = wxGetApp().argv;

然后我需要将它传递给argv类型中需要char**的另一个函数,

如何将wx_argvwchar_t**类型转换为char**

2 个答案:

答案 0 :(得分:0)

使用标准功能:

#include <stdlib.h>

wchar_t* p = L"Ciao Mondo";
char    v[50];
wcstombs(v, p, 10);

答案 1 :(得分:0)

正确的答案取决于您需要使用哪个编码的窄(char*)字符串。如果这是当前语言环境的编码,那么您确实可以使用wcstombs(),如上所述通过@AngeloDM。否则,您可以直接使用某些wxMBConv派生类的方法(例如wxMBConvUTF8wxMBConvUTF16用于特定编码,或wxCSConv将尝试转换为任何支持的字符集你指定)或通过wxString

在任何情况下,这只需要处理从wchar_t*char*的转换,您仍然需要分配自己的argc大小的char**数组并循环所有条目逐个转换。