【问题标题】:wxWidgets convert wchar_t** to char**wxWidgets 将 wchar_t** 转换为 char**
【发布时间】:2014-07-06 06:26:59
【问题描述】:
我正在尝试使用以下代码捕获应用程序 argc 和 argv:
int wx_argc = wxGetApp().argc;
wchar_t** wx_argv = wxGetApp().argv;
然后我需要将它传递给另一个需要argv in char** 类型的函数,
如何将wx_argv 类型从wchar_t** 转换为char**?
【问题讨论】:
标签:
c++
type-conversion
wxwidgets
【解决方案1】:
使用标准函数:
#include <stdlib.h>
wchar_t* p = L"Ciao Mondo";
char v[50];
wcstombs(v, p, 10);
【解决方案2】:
正确答案取决于您需要窄 (char*) 字符串的编码。如果这是当前语言环境的编码,那么您确实可以使用 @AngeloDM 提到的 wcstombs()。否则,您可以直接使用某些 wxMBConv 派生类的方法(例如,wxMBConvUTF8 或 wxMBConvUTF16 用于特定编码或 wxCSConv 将尝试转换为您指定的任何支持的字符集)或通过 @987654321 @。
在任何情况下,这只会处理从wchar_t* 到char* 的转换,您仍然需要分配自己的argc 大小的char** 数组并循环遍历所有条目,一一进行转换。