Разбор аргументов командной строки в C

0

У меня есть программа, которая должна использовать переменные, которые должны быть установлены при вызове программы из командной строки. Я хочу, чтобы пользователь мог указать опции -r, -o, -s и -p вместе с некоторым целым числом. Я никогда не рассматривал аргументы командной строки, но после некоторых исследований я придумал следующее:

int main(int argc, char *argv[]){
    for(k = 1; k < argc; k = k+2){
        if(std::string(argv[k]) == "-r"){
           n = atoi(std::string(argv[k+1]));
        }else if(std::string(argv[k]) == "-o"){
           o = atoi(std::string(argv[k+1]));
        }else if(std::string(argv[k]) == "-s"){
           p = atoi(std::string(argv[k+1]));
        }else{
          n = 1; o = 2; p = 3;
        }
    }
}

Моя идея заключается в том, что пользователь будет вызывать программу следующим образом:

$ ./my_program -r 1000 -o 10000000 -s 1

чтобы соответственно установить переменные в моей программе. Однако, когда я пытаюсь скомпилировать это с моим make файлом, я получаю сообщение об ошибке:

    error: std undeclared (first use in this function)
        if(std::string(argv[k]) == "-r"){
           ^

Есть еще много, но я не могу их набирать. Я уверен, что если я выясню эту ошибку, я смогу понять остальных. Почему C не похож на меня?

РЕДАКТИРОВАТЬ:

В качестве быстрой заметки я включил, но это не устраняет никаких ошибок, а вывод при вызове make все тот же.

  • 1
    #include <string> (вы пометили C, но код, который вы разместили, - C ++)
  • 0
    В том числе это не исправляет ни одной из ошибок, которые я имею.
Показать ещё 10 комментариев
Теги:

1 ответ

2

Здесь вы должны использовать getopt(). Функции getopt() и getopt_long автоматизируют некоторые из задач, возникающих при анализе типичных параметров командной строки unix. Это сэкономит вам все усилия.

http://www.ibm.com/developerworks/aix/library/au-unix-getopt.html

Ещё вопросы

Сообщество Overcoder
Наверх
Меню