在C++ Visual Studio 2017中使用main函数是错误的吗?
int main(int argc, wchar_t* argv[])
因为我的程序可以接收特殊字符。
6ie5vjzr1#
请阅读GetCommandLine上的备注部分:用C编写的ANSI控制台进程可以使用main函数的argc和argv参数来访问命令行参数。ANSI GUI应用程序可以使用WinMain函数的lpCmdLine参数来访问命令行字符串(不包括程序名)。main和WinMain函数不能返回Unicode字符串。用C编写的Unicode控制台进程可以使用wmain()或_tmain()函数访问命令行参数。Unicode GUI应用程序必须使用GetCommandLineW函数来访问Unicode字符串。若要将命令行转换为argv样式的字符串数组,请调用CommandLineToArgvW函数。
GetCommandLine
wmain()
_tmain()
cbeh67ev2#
是的,但是如果你需要进行输入输出操作,也许你需要添加std::setlocale(LC_ALL, "");,因为默认情况下它只支持最基本的英语字符输出。例如:
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; }
2条答案
按热度按时间6ie5vjzr1#
请阅读
GetCommandLine
上的备注部分:用C编写的ANSI控制台进程可以使用main函数的argc和argv参数来访问命令行参数。ANSI GUI应用程序可以使用WinMain函数的lpCmdLine参数来访问命令行字符串(不包括程序名)。main和WinMain函数不能返回Unicode字符串。
用C编写的Unicode控制台进程可以使用
wmain()
或_tmain()
函数访问命令行参数。Unicode GUI应用程序必须使用GetCommandLineW函数来访问Unicode字符串。若要将命令行转换为argv样式的字符串数组,请调用CommandLineToArgvW函数。
cbeh67ev2#
是的,但是如果你需要进行输入输出操作,也许你需要添加
std::setlocale(LC_ALL, "");
,因为默认情况下它只支持最基本的英语字符输出。例如: