我试图找出街道名称字符串是否是交叉点名称的子字符串:例如" Yonge St。"是" Yonge St.& Sons的子串。 Dundas St。",描述了一个交叉路口。我为此使用了str.find(),但是当我尝试进行以下测试时,结果并非我的意图:
我认为第二个" Express"在&符号之后("在#{1}}字符串中的#34;"之后)是导致A
被评估为test
的原因,实际上它应该是true
{1}},因为" Express"因为"收集器"在A1中与A不同。还有另一种方法可以检查字符串是否是较大字符串的"连续" 子字符串?
我目前的想法是将&符号中的交叉点名称分成两个半交叉点名称,并将false
和A1
与每个半交叉点名称进行比较。这是有效的,但我需要循环这段10k +次,所以我不认为这是一个有效的解决方案。此外,交叉点名称可能有多个"&"这可能会产生错误。
任何帮助将不胜感激!
答案 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次应该没问题,它应该在不到一秒的时间内运行。处理多个&符号是一个不同的问题。
顺便说一句,请将您的代码作为实际代码发布,而不是下次拍摄图像。