2010-11-10 144 views
2

假设,那我的代码:的char *(64位(Windows 7)中)

// My.cpp 
#include <iostream> 

int main(int argc, char ** argv) 
{ 
    if (argc > 1) 
     std::cout << argv[ 1 ] << std::endl; 
} 

(我用MVSC++ 2008)

当我输入cmd.exe运行我的程序:

My.exe argument

我得到这个输出:

a r g u m e n t 

为什么?????

+0

看起来像你切出相关的代码 - 你的例子甚至不会编译 – 2010-11-10 18:43:25

+0

你的一些代码似乎丢失 – 2010-11-10 18:43:44

+2

尝试将输出重定向到一个文件('my.exe argument> output.dat')和然后在十六进制编辑器中打开'output.dat'来查看哪些字节是真正输出的。这将有助于发现发生了什么问题。 – 2010-11-10 18:44:09

回答

5

可能是一个字符代码问题。尝试用“\ n”替换“std :: endl”并查看。另外,你编译为Unicode吗?

1

它看起来像你用Unicode字符集选项编译。转到项目属性,并在General页面切换到“使用多字节字符集”。另外,如果你想使用UTF-16改变main()功能:

int wmain(int argc, wchar_t **argv) 

此外,使用std::wcout代替std::cout打印参数。