【发布时间】:2018-03-21 08:04:44
【问题描述】:
我正在使用命令行界面。 用户输入诸如
之类的命令这将添加带有-s 标志的“歌曲”
add -s TITLE ARTIST
这将添加一个带有-a 标志的“专辑”
add -a TITLE ARTIST
还有不同的标志和不同的命令,例如 delete。
我这样做是为了评估命令和标志,但是我在获取字符串的其余部分时遇到了麻烦。用户输入以 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 这样的库?它在 C 中几乎是通用的。
-
minimal reproducible example 可以大大改善您的问题。您在调试器中观察到了什么?
-
我会考虑使用字符串拆分算法:stackoverflow.com/questions/236129/…