Сохранить argv в вектор или строку - PullRequest
5 голосов
/ 15 июня 2011

Мне нужно сохранить все аргументы в векторе или что-то вроде этого.Я не программист, поэтому я не знаю, как это сделать, но вот что у меня так далеко.Я просто хочу вызвать систему функций для передачи всех аргументов после.

#include "stdafx.h"
#include "iostream"
#include "vector"
#include <string>
using namespace std;

int main ( int argc, char *argv[] )
{
       for (int i=1; i<argc; i++)
       {
           if(strcmp(argv[i], "/all /renew") == 0)
           {
                 system("\"\"c:\\program files\\internet explorer\\iexplore.exe\" \"www.stackoverflow.com\"\"");
           }
           else
              system("c:\\windows\\system32\\ipconfig.exe"+**All Argv**);
       }

       return 0;
}

Ответы [ 2 ]

45 голосов
/ 15 июня 2011

мне нужно сохранить все аргументы в векторе или что-то еще

Вы можете использовать конструктор диапазона вектора и передать соответствующие итераторы:

std::vector<std::string> arguments(argv + 1, argv + argc);

Не уверен на 100%, если это то, что вы спрашивали. Если нет, уточните.

0 голосов
/ 15 июня 2011

Чтобы создать строку со всеми объединенными аргументами, а затем выполнить команду на основе этих аргументов, вы можете использовать что-то вроде:

#include <string>
using namespace std;
string concatenate ( int argc, char* argv[] )
{
    if (argc < 1) {
        return "";
    }
    string result(argv[0]);
    for (int i=1; i < argc; ++i) {
        result += " ";
        result += argv[i];
    }
    return result;
}
int main ( int argc, char* argv[] )
{
    const string arguments = concatenate(argc-1, argv+1);
    if (arguments == "/all /renew") {
        const string program = "c:\\windows\\system32\\ipconfig.exe";
        const string command = program + " " + arguments;
        system(command.c_str());
    } else {
        system("\"\"c:\\program files\\internet explorer\\iexplore.exe\" \"www.stackoverflow.com\"\"");
    }
}
...