在结构数组中搜索字符串变量[关闭]
Posted
技术标签:
【中文标题】在结构数组中搜索字符串变量[关闭]【英文标题】:Search an array of structs for a string variable [closed] 【发布时间】:2018-09-30 12:56:17 【问题描述】:考虑:
const int CAP = 20;
struct bookType
string bookTitle = "EMPTY";
string ISBN = "EMPTY";
string author = "EMPTY";
string publisher = "EMPTY";
string dateAdded = "EMPTY";
int qty = 0;
double wholesale = 0.00;
double retail = 0.00;
;bookType book[CAP];
我需要在这里做的事情很简单,尽管我似乎无法得到一个直接的答案。我想在这个结构数组 (book[]) 中搜索匹配的 bookTitle。例如,如果我有一本书名为“星球大战”,我需要能够通过输入“星”并找到一本书“星球大战”来搜索结构数组。我一直在寻找几个小时,但我发现的所有解决方案似乎都不起作用。
【问题讨论】:
你能描述一下你作为人类会做什么来解决这个任务吗?另外,作为这里的新用户,请使用tour阅读How to Ask! 你知道如何遍历你的结构吗?你知道如何进行不区分大小写的字符串子串比较吗? 我已经搜索了几个小时,但我找到的所有解决方案似乎都不起作用。你的教授做了他的/她的家庭作业意味着他们希望您考虑问题,而不是仅仅使用谷歌来寻找解决方案。 你能描述一下你作为人类会做什么来解决这个任务吗?这是一个很好的问题。因为这是解决问题的方法。在c++
代码中执行相同的步骤。
虽然我似乎无法得到直接的答案 -- 你无法得到直接答案的原因是你的程序由多个组件——循环、搜索、字符串比较等。这些是你需要以合乎逻辑的方式组合在一起以形成最终程序的组件。您是否甚至组合了一个简单的循环,只是为了遍历数组(忘记搜索)?
【参考方案1】:
我不知道你们其他人的代码,所以我会尝试给出一个通用的答案。
您似乎正在寻找字符串对象的 find() 函数。如果没有找到任何东西,find 函数将返回 std::string::npos。
所以在一个循环中,测试:
Booktype[x].bookTitle.find("Star")!=std::string::npos
将 Star 更改为您要搜索的任何内容。如果这个条件为真,那么你有一个匹配。
请注意,这是区分大小写的,因此您可能需要创建临时变量并将标题和查询转换为小写并在它们上运行循环。
希望这会有所帮助。
【讨论】:
以上是关于在结构数组中搜索字符串变量[关闭]的主要内容,如果未能解决你的问题,请参考以下文章