【问题标题】:How to pass a command line argument from a cpp file and use it in a shell script?如何从 cpp 文件传递​​命令行参数并在 shell 脚本中使用它?
【发布时间】:2020-04-24 04:56:00
【问题描述】:

所以,我必须创建一个使用我的脚本来搜索某人姓名的 cpp 文件。我对此很陌生,所以我不太了解,但这就是我目前所拥有的。我也必须使用系统()。这是我的代码

#include <iostream>
#include <string>
#include <cstdlib>
using namespace std;

int main (int argc, char *argv[]) {
    system("./findName.sh" + argv[1] );
    return 0;
}

【问题讨论】:

  • 你包括&lt;string&gt;。为什么不创建一个 std::string 并使用您想要传递给 std::system 的完整命令?

标签: c++ command-line-arguments


【解决方案1】:

问题在于,在 C++ 中,字符串字面量(如"./findName.sh")不是std::string,而是指针。对于指针来说,加法除了字符串连接之外还有另外一种含义。

您可以创建一个std::string 并使用它来执行连接:

    std::string scriptName = "./findName.sh";
    std::string command = scriptName + " " + argv[1];

    system(command.c_str());

不要忘记检查argc 的大小以确保有参数。

【讨论】:

  • 我试过了,但它告诉我命令行参数不等于1,(我在shell脚本中写了这个)
  • @Cholo 这应该是你的主要功能。
  • 它在我的主函数中,但它在说消息,就像它没有收到我的论点一样
  • 它还告诉我“./findName.sh: 1: [: 1: unexpected operator”
【解决方案2】:

您可以为此目的使用std::systemboost::process

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-17
    • 2018-04-02
    • 1970-01-01
    • 2022-01-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多