Fel*_*bek 8 c++ boost stl string-comparison
我想在C++中实现一个字符串比较,比较字符串到"%"符号.
我可以这样做:
std::equal(str1.begin(),
std::find(str1.begin(), str1.end(), L'%'),
str2.begin());
Run Code Online (Sandbox Code Playgroud)
由于我在一个循环过许多字符串这样做,我不知道是否有没有两个不同的字符串遍历的方法find和equal(也许与可终止在任何时候比较的谓词).提升还可以.
Col*_*mbo 12
你可以试试std::mismatch.
下面的代码将与C++ 14一起运行(它需要模板重载两个迭代器对),但它在C++ 11(或03,没有lambdas)中非常相似:
auto iters = std::mismatch( str1.begin(), str1.end(), str2.begin(), str2.end(),
[] (char lhs, char rhs) {return lhs != '%' && lhs == rhs;});
if (iters.first == str1.end()
|| iters.second == str2.end()
|| *iters.first == '%')
// Success […]
Run Code Online (Sandbox Code Playgroud)
演示.