У меня есть программа, которая должна использовать переменные, которые должны быть установлены при вызове программы из командной строки. Я хочу, чтобы пользователь мог указать опции -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 все тот же.
Здесь вы должны использовать getopt()
. Функции getopt()
и getopt_long
автоматизируют некоторые из задач, возникающих при анализе типичных параметров командной строки unix. Это сэкономит вам все усилия.
http://www.ibm.com/developerworks/aix/library/au-unix-getopt.html
#include <string>
(вы пометили C, но код, который вы разместили, - C ++)