C++ utility algorithms for std::string