我可能完全错过了这里的重点,但我有以下方法可以在 Visual Studio 的 cpp 程序中打印出 args:
int _tmain(int argc, char* argv[])
{
char* fu = "Bar";
std::cout << "Test, " << argc << ", " << argv[0] << ", " << argv[1] << ", " << fu << endl;
printf("%s, %s, %s", argv[0], argv[1], fu);
return 0;
}
我遇到的问题是它似乎只打印 args 的第一个字符而不是整个字符串。
据我所知,argv[0] 取消引用 argv 数组以获取 char*,这就是我传递给 cout/printf 函数的内容。然后他们应该打印所有字符,直到 \0 字符。
我创建了测试 char* fu 以查看问题是否在于将 char* 传递给函数,但成功打印了“Bar”。
我唯一能想到的是因为 fu 的大小在编译时是已知的,而 argv 的大小并不是什么有趣的事情,因为它的编译方式正在发生。
我知道我可以通过遍历字符来打印出内容,但这似乎违背了这一点,例如,如果我想使用字符串进行比较或其他什么。有人可以解释发生了什么吗?