C++将字符串与"%"char进行比较

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)

由于我在一个循环过许多字符串这样做,我不知道是否有没有两个不同的字符串遍历的方法findequal(也许与可终止在任何时候比较的谓词).提升还可以.

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)

演示.