내 말은 콘솔에서 (예 : 한 번에 입력하고 싶은만큼) 사용자의 매개 변수를 사용하는 프로그램을 만드는 것입니다.개체를 함수에 매핑하는 올바른 C++ 방법은 무엇입니까?
-p /users/me/myFolder/myHtmlFile.html -d /users/me/myOtherFolder -n myHmtlFileStyles -r
프로그램을 실행 한 후, 매개 변수 -p
, -d
및 -n
을 설정 (즉 -r
가하는 일의 원인) 것입니다. 이미 입력 문자열에서 공백으로 둘러싸인 각 부분 문자열을 통과하는 함수를 작성했습니다. 그래서 n00b 디자인 패턴은 다음과 같을 것이라고 생각합니다.
if (this_substring == "-p")
{
// ... run some procedure
}
else if (this_substring == "-d")
{
// ... run some procedure
}
else if (this_substring == "-n")
{
// ... run some procedure
}
else if (this_substring == "-r")
{
// ... run some procedure
}
else
{
// ... trigger not recognized; throw an error
}
그러나 나는 더 우아하고 적절한 방법이있을 것이라고 확신합니다. 예를 들어, 함수에 string
을 매핑하는 방법이 있습니까?
std::map<std::string, function> triggerMap = {{"-p", function1()}, {"-d", function2()}, "-n", function3()}, {"-r", function4()}};
??????
여기에지도를 통해 unorderd_map 선택한 이유라도? – stijn
@stijn 여기서는 순서가 필요하지 않으므로 키 - 값 조회 용 관용적 솔루션은 'unordered_map'인 해시 테이블입니다. –