C++ argv[1] 有些奇怪

c++ argv[1] something strange

本文关键字:argv C++      更新时间:2023-10-16

我在解析argv[]的C++参数时遇到了奇怪的问题。下面是一些代码示例:

int main(int argc, char **argv) {
    for (int i=0; i <argc; i++)
        printf("argv[%d] = %s|n", i, argv[i]);
    return 0;
};

当我像这样运行这个程序时:

./myprogram --aaa-a --bbb-b --ccc-c

我得到的结果是这样的:

argv[0] = myprogram|
argv[1] = --aaa-a --bbb-b|
argv[2] = --ccc-c

但是当我尝试时:

./myprogram --aaa-a  --bbb-b --ccc-c

在 aa 和 bb 之间有额外的空间,我得到了:

argv[0] = myprogram|
argv[1] = --aaa-a|
argv[2] =  --bbb-b|
argv[3] = --ccc-c|

有人能告诉我这里发生了什么吗?

由于某种原因,您在--aaa-a--bbb-b之间有一个不可断开的空格(或任何显示为空格的字符)。删除整个命令行并从头开始重新编写。