내가 C++ 11 꽤 새로운 그리고 난 정말 명령 줄 인수는 argv를 포인터로 해석하는 방법 그것을 얻을하지 않습니다 ...C++ 11 명령 줄 매개 변수 분리
이 코드를 :
int main(int argc, char* argv[])
{
std::string curr_arg = "";
std::string str_base = "";
std::string str_subs_file = "";
std::string str_subs = "";
for(int i = 1; i < argc; i++)
{
curr_arg = argv[i];
if(curr_arg == "-b" || curr_arg == "--base")
{
str_base = argv[++i];
}
else if(curr_arg == "-f" || curr_arg == "--file")
{
str_subs_file = argv[++i];
}
else if(curr_arg == "-s" || curr_arg == "--subs")
{
str_subs = argv[++i];
}
else
{
std::cout << "Argument '" << argv[i] << "' is not recognised." << std::endl;
return -1;
}
}
}
내가 ./subs -b 기본 -sa 내 프로그램을 호출 = 1,2,3, B = 4,5,6, C = 6,7,8 내가 얻을 것으로 기대 if(curr_arg == "-s" || curr_arg == "--subs"
블록에 입력 할 때 "a = 1,2,3; b = 4,5,6; c = 6,7,8"인수 대신 "a = 1,2,3"및 그 이상을 받는다. . 전체 인수를 따옴표로 묶어서 사용하면 효과가 있음을 알지만, 그런 이유가 무엇인지 이해할 수 없습니다 .. 나에게 설명 할 수있는 사람이 있습니까?
';'는 대부분의 쉘에서 명령 구분 기호입니다. 이것은 C 또는 C++과 아무 관련이 없습니다. – Mat
: 자신 만의 CLI 파서를 쓰고 싶습니까? 왜 기존의 것을 사용하지 않을까요 ('boost :: program_options', ...)? –
오, 좋아, 빠른 답변 주셔서 감사합니다! 난 그냥 과잉 일 것이기 때문에 아무 것도 생각하지 못했을 것입니다. –