2

可能重复:
无法在 VC++ 中使用 std::cout 打印出 argv[] 值

代码:

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

4

3 回答 3

4

_TCHAR如果可执行文件是使用 Unicode 选项构建的,则它是宽字符类型。cout无法处理宽字符,因此它不是将其转换为 achar *并打印出字符串,而是(有效地)使用void *打印出字符串地址的默认打印机。

改为使用wcout

于 2012-09-26T04:08:46.880 回答
1

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

cout << (char *)argv[0] << endl;
于 2012-09-26T04:07:06.383 回答
0

在你的project settings->General. 转到"Character encoding"并选择"multibyte character set"。并将您的更改_tmain()main(). 现在它将打印您的字符。

于 2012-09-26T05:17:09.717 回答