저는 커맨드 라인 인터페이스에서 일하고 있습니다. 사용자는C++에서 동일한 문자열에 대해 string.substr (x, y)를 여러 번 사용할 수 없습니까?
add -s TITLE ARTIST
이
add -a TITLE ARTIST
이되는 -a
플래그에 "앨범"을 추가 할 이것은 -s
의 국기와 함께 "노래"를 추가 것 명령 등
로 입력 다른 플래그와 같은 다른 명령은도 삭제합니다.
명령 및 플래그를 평가하기 위해이 작업을 수행했지만 나머지 문자열을 가져 오는 데 문제가 있습니다. 사용자 입력은 문자열로 변환되는 char의 배열로 사용됩니다.
if (inputString.substr(0, 3) == "add"){
if (inputString.substr(4, 5) == "-s"){
cout << "TEST: ADD SONGS" << endl;
//PROBLEM IS THIS LINE
cout << inputString.substr(6, MAX_LENGTH) << endl;
}
언제든지 + 동작 플래그가 표시되면 나머지 문자열을 사용하여 실제로 데이터베이스에 정보를 추가하는 새로운 기능을 실행하고 싶습니다.
입력 할 때 아무런 문제가 없습니다. add -s
프로그램은 첫 번째 문자를 평가하여 노래를 추가하려고한다는 것을 알고 있습니다. 그러나 "add -s "Sorry" "Justin Bieber"
"과 같이 더 입력하면 프로그램에서 add -s 플래그가 실행되었음을 확인하지 못합니다.
누군가가 이것을 왜 변경할 수 있습니까? .
가
참고로,이 작업을 직접하는 것은 모든 상처를 입히는 것입니다. [Getopt] (https://en.wikipedia.org/wiki/Getopt)와 같은 라이브러리 사용을 고려 했습니까? C로 보편적입니다. – tadman
[mcve]로 질문을 많이 향상시킬 수 있습니다. 디버거에서 무엇을 관찰 했습니까? – Tas
문자열 분할 알고리즘을 사용하는 것이 좋습니다. https://stackoverflow.com/questions/236129/most-elegant-way-to-split-a-string – Galik