默认情况下,_tmain
将 Unicode 字符串作为参数,但cout
需要 ANSI 字符串。这就是为什么它只打印每个字符串的第一个字符。
如果你想使用 Unicode ,_tmain
你必须像这样使用它:TCHAR
wcout
int _tmain(int argc, TCHAR* argv[])
{
for (int c = 0; c < argc; c++)
{
wcout << argv[c] << " ";
}
return 0;
}
或者,如果您乐于使用 ANSI 字符串,请像这样使用普通main
的 withchar
和cout
:
int main(int argc, char* argv[])
{
for (int c = 0; c < argc; c++)
{
cout << argv[c] << " ";
}
return 0;
}
更详细一点:可以是 Unicode或TCHAR
ANSI ,具体取决于编译器设置。如果定义了 UNICODE(这是新项目的默认设置),它们会使用 Unicode。它没有定义UNICODE,他们说ANSI。所以理论上你可以编写不需要在 Unicode 和 ANSI 构建之间更改的代码——你可以在编译时选择你想要的。_tmain
失败的地方是cout
(ANSI)和wcout
(Unicode)。没有_tcout
或同等的。但是您可以轻松地创建自己的并使用它:
#if defined(UNICODE)
#define _tcout wcout
#else
#define _tcout cout
#endif
int _tmain(int argc, TCHAR* argv[])
{
for (int c = 0; c < argc; c++)
{
_tcout << argv[c] << " ";
}
return 0;
}