我正在使用命令行界面。 用戶輸入一個命令,如無法使用C++在同一個字符串上多次使用string.substr(x,y)?
這將增加一個「歌」與-s
標誌
add -s TITLE ARTIST
這將有-a
標誌
add -a TITLE ARTIST
有添加「專輯」不同的標誌和不同的命令,如刪除以及。
我已經這樣做來評估命令和標誌,但是我無法獲取字符串的其餘部分。用戶輸入作爲一個字符數組,被轉換成一個字符串。
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"
該程序甚至不承認,添加-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