查找字符串中的子字符串
问题描述:
在C++中,我有一个带有许多名字的电话簿,比如Sinatra,Frank,并且我希望用户能够输入任意长度的字符串来扫描文件。一旦我有用户输入任意长度的字符串,我该如何扫描整个字符串“Sinatra,Frank”为“Frank”或“Sinatra”或“atra”并查看它属于哪个名称?查找字符串中的子字符串
答
您可以使用strstr()
在字符串中查找一个子字符串。
答
可以使用std::string::find
方法:
string s = "Sinatra, Frank";
string::sizetype index = s.find("Frank");
这可以让你的比赛(在这种情况下是9)的指数。
答
如果它是一个std::string
,您可以使用“西纳特拉,弗兰克”串
答
一个问题的.find()
方法:是你的电话本,每个名字上一个新行平面文件(在你的榜样“ Sinatra,Frank“的格式,例如”Lastname,Firstname“等等),还是你有这个电话簿的一些结构,其中每个name-string是一个数组的节点,链表等等?
注意,对于的strstr():
strstr(const char *s1, const char *s2)
位于字符串s2的S1中的第一次出现,这可能是足够的适合你。
对于您的输入字符串,请务必以某种方式检查大小限制;如果用户通过某个接口输入字符串,则应明确处理以确保它不超过您的存储空间或包含恶意字符或代码。
Ken's solution在原始字符串中产生子字符串的位置(只要它不是null,意味着有'hit'),但不会告诉你电话簿的哪个条目是命中;您的代码将需要跟踪哪些条目/条目已被点击,以便您可以返回一组有意义的结果。