C ++:使用str.find(str1)查找字符串是否是另一个字符串的子字符串的结果不正确

时间:2018-02-03 03:04:25

标签: c++ string

我试图找出街道名称字符串是否是交叉点名称的子字符串:例如" Yonge St。"是" Yonge St.& Sons的子串。 Dundas St。",描述了一个交叉路口。我为此使用了str.find(),但是当我尝试进行以下测试时,结果并非我的意图:

enter image description here我认为第二个" Express"在&符号之后("在#{1}}字符串中的#34;"之后)是导致A被评估为test的原因,实际上它应该是true {1}},因为" Express"因为"收集器"在A1中与A不同。还有另一种方法可以检查字符串是否是较大字符串的"连续" 子字符串?

我目前的想法是将&符号中的交叉点名称分成两个半交叉点名称,并将falseA1与每个半交叉点名称进行比较。这是有效的,但我需要循环这段10k +次,所以我不认为这是一个有效的解决方案。此外,交叉点名称可能有多个"&"这可能会产生错误。

任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:1)

find()正常运作。 A1 是A的子字符串。

A: Highway 401 Eastbound Collector & Switchover to Highway 401 Eastbound Express lane
A1:                                                Highway 401 Eastbound Express lane

如果要检查字符串是否是特定位置的另一个字符串的子字符串,请使用string::compare()函数。您可以使用字符串流和getline()分隔符号中的字符串。这样做10k次应该没问题,它应该在不到一秒的时间内运行。处理多个&符号是一个不同的问题。

顺便说一句,请将您的代码作为实际代码发布,而不是下次拍摄图像。