使用C ++将命令行参数拆分为参数/向量

问题描述 投票:0回答:1

我有一个C ++项目,以前曾用这样的代码接收多个命令行参数:

int main(int argc, char* argv[])

{


    for (int i = 1; i < 4; i = i + 1)

        {

            //do some stuff with argv[i]
            int in_arg = m[argv[i]];

        }

            return 0

}

使用此代码,示例命令行参数可能是:

C:\MyFolder\MyExecutable.exe 4 0 1

但是,由于将此代码插入到更广泛的项目中,因此我的命令行现在必须看起来像这样:

C:\MyFolder\MyExecutable.exe 401

[如何将参数401拆分为向量或类似函数,其功能与具有三个输入参数,例如4 0 1相同,所以我的行:

int in_arg = argv[i];

...可以指向类似以下内容的东西:

int in_arg = new_vector[i];

我只涉猎C ++,如果我问基本问题,我深表歉意。

谢谢

c++ command-prompt
1个回答
0
投票

您可以根据参数创建strings,然后逐个字符地浏览它们:

#include <iostream>
#include <string>
#include <vector>

int cppmain(std::string program, std::vector<std::string> args) {
    std::cout << program << " got arguments:\n";
    for(auto& arg : args) {               // each argument as a string
        std::cout << " " << arg << "\n";
        for(char ch : arg) {              // each char in the current string
            std::cout << "  " << ch << '\n';
        }
    }
    return 0;
}

int main(int argc, char* argv[]) {
    return cppmain(argv[0], {argv + 1, argv + argc});
}

输入:

./program 401

输出:

./program got arguments:
 401
  4
  0
  1

© www.soinside.com 2019 - 2024. All rights reserved.