jbu*_*jbu 9 c++ parsing command-line-arguments
我有一个程序:
int _tmain(int argc, char* argv[])
{
std::cout << "STARTING" << std::endl;
std::cout << "Num inputs: " << argc << std::endl;
for(int i = 0; i < argc; i++)
std::cout << argv[i] << std::endl;
Run Code Online (Sandbox Code Playgroud)
我希望打印出所有命令行参数.但是,输出是这样的:
./Test.exe你好世界
START Num输入:3.HW
它似乎只是查看每个参数中的第一个字符,而不是整个字符*直到终止字符.
有人有什么想法?
附加说明:通过VS2008创建它,我本质上是在互联网上复制和粘贴一个应该工作的例子.我用bash,powershell和cmd运行程序.
Dar*_*con 17
您的Visual C++项目设置为Unicode,您的主要功能称为_tmain.这意味着Windows会调用您的函数并传递Unicode字符串,但您可以使用char*类型将它们视为ANSI字符串.由于第一个Unicode字符的第二个字节为null,因此它显示为带有一个字符的ANSI字符串.
很可能它是用UNICODE设置编译的.你应该使用wcout而不是coutif UNICODE定义.并且所有字符串都应放在里面_T().
#ifdef UNICODE
#define tout wcout
#else
#define tout cout
#endif
int _tmain(int argc, TCHAR* argv[])
{
std::tout << _T("STARTING") << std::endl;
std::tout << _T("Num inputs: ") << argc << std::endl;
for(int i = 0; i < argc; i++)
std::tout << argv[i] << std::endl;
Run Code Online (Sandbox Code Playgroud)