【问题标题】:Best way to concatenate command line args连接命令行参数的最佳方法
【发布时间】:2015-12-06 02:12:12
【问题描述】:

我有 optind 指向我的第一个非开关参数。总共可以有任意数量的参数。我需要将剩余的 args 连接成 char*。我有一个从arg[optind]arg[argc-1] 的循环,并得到每个的(长度+ 1)(一个用于args 之间的空格,一个用于'\0' 最后:totalLen += strlen(arg[i]) + 1。一旦我有了长度通过另一个循环连接 args 的最佳途径是什么?

【问题讨论】:

    标签: c++ char concatenation command-line-arguments strlen


    【解决方案1】:

    您可以使用std::stringoperator +=() 并循环通过argv[] 并将参数添加到字符串中。

    std::string non_switch;
    for (int i = optind; i < argc; i++)
        non_switch += argv[i];
    

    【讨论】:

    • 快速相关的问题:如果我的程序调用是:myProg.o -a -b foo=bar stack -overflow optind 会指向 foo=bar 吗?或者-overflow 会把它扔掉吗?我也希望能够调用其他程序及其参数,因此需要连接。
    • 我不知道。我只是使用optind 作为第一个非开关参数的索引,但我没有使用它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-21
    • 2010-10-04
    • 1970-01-01
    • 2013-01-25
    相关资源
    最近更新 更多