您在输出中看到了一个地址,cout
因为您已经使用UNICODE
或_UNICODE
定义了程序。可能是通过 Visual Studio 项目中的设置。然后_tmain
扩展为 MIcrosoft 的 non-standard wmain
,并_TCHAR
扩展为wchar_t
.
并且cout
不知道指向的指针wchar_t
应该如何指向以空字符结尾的宽字符字符串。
我不确定为什么不会发生这种情况printf
。让我检查一下。
好的,我已经检查过了,您printf
没有按照您的指示打印“参数”。
这是我检查过的更正代码:
#include <iostream>
#include <stdio.h>
#include <tchar.h>
using namespace std;
int _tmain( int argc, _TCHAR* argv[] )
{
for( int i = 0;i < argc; ++i )
{
printf("printf Argument %d:%s\n",i,argv[i]);
}
for( int i = 0; i < argc; ++i )
{
cout << "cout Argument " << i << ": " << argv[i] << endl;
}
}
结果如下:
[D:\开发\测试]
> cl foo.cpp /D _UNICODE
foo.cpp
[D:\开发\测试]
> 富参数
printf 参数 0:f
printf 参数 1:p
cout 参数 0:004F9A9C
cout 参数 1:004F9AA4
[D:\开发\测试]
> _
换句话说,明显的难题完全是由于您对结果的不准确报告造成的。
解决方案:不要使用微软的非标准wmain
,特别是不要使用现在完全没有意义的 Windows 9x 支持宏!,使用标准的 C++main
。