我知道这个问题很基础,我也是新手,所以请帮我解决这个问题:
我有这个代码:
int wmain(int argc, wchar_t *argv[])
{
if (*argv[1] == L'-' && (!_wcsicmp(L"install", argv[1]+1)))
{
wprintf(L"You pressed: -install !");
}
else
{
wprintf(L"Unknown");
}
}
它工作正常,但如果我替换为:
int wmain(int argc, wchar_t *argv[])
{
if (*argv[1] == L'-' && (!_wcsicmp(L"install", argv[2])))
{
wprintf(L"You pressed: -install !");
}
else
{
wprintf(L"Unknown");
}
}
运行时中断。
我不知道
- 为什么要使用 argv[1]+1
- argv[1]+1 和 argv[2] 有什么区别(我在上面用过)。
谁能给我解释一下,并给我关于 wchar_t 的文档???
最佳答案
首先, 为什么要使用 argv[1]+1: --> _wcsicmp 需要 POINTER,所以你需要传递:argv[1] + 1 或 argv[2]
其次, argv[1]+1 和 argv[2] 有什么区别(我在上面用过)。 : --> 你看到 wmain 的第二个参数了吗:wchar_t *argv[]? - 这意味着 POINTER 到 ARRAY(相同的 POINTER 到 POINTER)。
每个参数用空格隔开。 因此,argv[1] 是指向第二个参数的指针,argv[2] 是指向第三个参数的指针。 并且,argv[1]+1 将指针中的地址增加 1(意味着该指针将指向第二个参数字符串中的第二个字符)
关于c++ - argv[1]+1 和 argv[2] 有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20040227/