`cout<< argv [0]`返回十六进制值?

时间:2012-09-26 04:03:14

标签: c++ iostream tchar

  

可能重复:
  Can not print out the argv[] values using std::cout in VC++

代码:

using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
    cout << argv[0] << endl;
    system("PAUSE");
    return 0;
}

如您所见,标准的Win32控制台应用程序 令人困惑的部分是,argv[0]的值输出为00035B88 这是(AFAIK)在没有命令行选项的情况下运行,因此argv[]不应该有值。 (或者这是问题?)

但是,argv[]被声明为指针(_TCHAR*),我听说cout将打印指针的地址。是这样的吗?如果是这样,我如何打印/使用argv

的值

3 个答案:

答案 0 :(得分:4)

如果可执行文件是使用Unicode选项构建的,则

_TCHAR是宽字符类型。 cout无法处理宽字符,因此不会将其转换为char *并打印出字符串,而是(有效地)使用默认的void *打印机打印出的地址字符串。

改为使用wcout

答案 1 :(得分:0)

嗯。 argv中的第一个数组条目(即argv [0]),如果我没记错的话,是可执行文件的名称。所以它可能是在c样式字符数组中打印第一个字符的地址。试试这个:

cout << (char *)argv[0] << endl;

答案 2 :(得分:0)

project settings->General中。转到"Character encoding"并选择"multibyte character set"。并将_tmain()更改为main()。现在它将打印你的角色。