c++ 在main函数中使用wchar_t

vbopmzt1  于 2023-05-08  发布在  其他
关注(0)|答案(2)|浏览(243)

在C++ Visual Studio 2017中使用main函数是错误的吗?

int main(int argc, wchar_t* argv[])

因为我的程序可以接收特殊字符。

6ie5vjzr

6ie5vjzr1#

请阅读GetCommandLine上的备注部分:
用C编写的ANSI控制台进程可以使用main函数的argc和argv参数来访问命令行参数。ANSI GUI应用程序可以使用WinMain函数的lpCmdLine参数来访问命令行字符串(不包括程序名)。main和WinMain函数不能返回Unicode字符串。
用C编写的Unicode控制台进程可以使用wmain()_tmain()函数访问命令行参数。Unicode GUI应用程序必须使用GetCommandLineW函数来访问Unicode字符串。
若要将命令行转换为argv样式的字符串数组,请调用CommandLineToArgvW函数。

cbeh67ev

cbeh67ev2#

是的,但是如果你需要进行输入输出操作,也许你需要添加std::setlocale(LC_ALL, "");,因为默认情况下它只支持最基本的英语字符输出。例如:

int wmain(int argc, wchar_t* argv[])
{
  std::setlocale(LC_ALL, "");
  wstring str = argv[1]; //if argv[1] contains unicode characters, such as"你好"
  wcout << str << endl;
  return 0;
}

相关问题