可能重复:
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
?
答案 0 :(得分:4)
_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()
。现在它将打印你的角色。