【发布时间】:2011-03-14 17:24:45
【问题描述】:
我得到 argv 作为 wchar_t**(见下文),因为我需要使用 unicode,但我需要将其转换为 char **。我该怎么做?
int wmain(int argc, wchar_t** argv)
{
【问题讨论】:
-
你不会 :-p 我强烈赞成用 Unicode 来完成你的所有工作,因为这是给你的。您只需要分配
char** myArgs = new char*[argc];,然后循环遍历argv,一次转换每个字符串,然后用转换后的字符串填写myArgs- 我希望有人会为此提供代码,这就是我不发布答案的原因。但请考虑采用另一种方式 - 修改使用 char** 的代码以改为接受 wchar_t**。 -
转换,因为我忘了提到它,是用
WideCharToMultiByte或wcstombs完成的(更喜欢_s版本)。但是你需要分配一个缓冲区来接收字符串,如果你弄错了,可能会调整它的大小——我没有写代码,因为我不记得是否有一种简洁/简单的方法可以做到这一点。我猜最容易瞄准高点。 -
感谢您谈论您确切知道的事情,而不是假装您知道并且可以做任何事情。所以为你的谦虚+2!
-
如果您需要使用 Unicode,您应该不转换为
char*,句号。