gpt4 book ai didi

c++ - 无法使用 C++ 在同一个字符串上多次使用 string.substr(x, y)?

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:07:59 26 4
gpt4 key购买 nike

我正在使用命令行界面。用户输入命令,例如

这将添加带有 -s 标志的“歌曲”

add -s TITLE ARTIST 

这将添加带有 -a 标志的“相册”

add -a TITLE ARTIST

还有不同的标志和不同的命令,例如删除

我这样做是为了评估命令和标志,但是我在获取字符串的其余部分时遇到了问题。用户输入被作为一个 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 标志。

谁能解释这是为什么以及我该如何改变它?现在坚持了一段时间。

最佳答案

if (inputString.substr(4, 5) == "-s"){

substr() 的第二个参数是字符数。这从字符串中提取(最多)5 个字符,从偏移量 4 开始。

However if I type in more such as "add -s "Sorry" "Justin

好的,所以用我的手指数到偏移量 4,也就是“-”字符。然后,从该位置开始提取五个字符,得到以下字符串:

-s "S

我把它算作五个字符。这就是 substr() 返回的内容。比较它与字符串“-s”的相等性显然失败了。

您应该借此机会学习一些调试技巧。如果你添加了这样的东西:

std::cout << inputString.substr(4, 5) << std::endl;

就在第二个 if 语句之前,我相信您会自己想出这一切。

关于c++ - 无法使用 C++ 在同一个字符串上多次使用 string.substr(x, y)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46657858/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com