这段代码出了什么问题?(将char*转换为字符串)

Acr*_*per 2 c++ string char

我正在努力学习C++,并且通过这样做来学习......

这个代码的最终结果是它输出char* argv[2]一个只接受字符串作为输入的函数,它将输出一个改变的字符串.

我怎样才能转换char* argv[2]成字符串?

由于某种原因,我尝试过的所有内容都会导致命令提示符崩溃.

int main(int argc, char* argv[])
{
    std::string com2 = argv[2];
    char* com1[4];
    com1[1] = "-f";
    com1[2] = "--file";
    com1[3] = "-t";
    com1[4] = "--text";
    if (strcmp(argv[1], com1[1]) == 0) {

        cout << com2;
    }
}
Run Code Online (Sandbox Code Playgroud)

hmj*_*mjd 6

数组索引从0to 运行N - 1,其中N是数组中元素的数量.因此4是无效索引,并导致未定义的行为.

通过argc在访问元素之前检查其值,确保为程序提供了正确数量的参数argv.