处理一个程序,该程序将参数与文件中的文本进行比较(我的文件是包含大量英语单词的字典)。
现在应用程序只能完全匹配字符串。
想知道是否有办法比较输入到文件中完整字符串的部分字符串并使其匹配。 例如,如果arg是ap,它将与apple,application alliance ext。
匹配COMMIT
答案 0 :(得分:3)
如果通过"匹配"你的意思是"来自文件的字符串包含来自输入的字符串"那么你可以使用string :: find方法。在这种情况下,您的情况将是这样的:
word.find(argv[1]) != string::npos
如果通过"匹配"你的意思是"来自文件的字符串以输入的字符串开头"然后,再次使用string :: find但是具有以下条件:
word.find(argv[1]) == 0
相关文档为here。
答案 1 :(得分:0)
首先将argv[1]
复制到字符串中(不是绝对必要的,但它会使后续比较更简单):
std::string target(arg[1]);
然后使用std::equal
:
if (std::equal(word.begin(), word.end(), target.begin(). target.end()))
这种形式的equal
(在C ++ 14中添加)如果两个序列中较短的一个匹配较长的开头的相应字符,则返回true
。