Как преобразовать std :: string в нижний регистр?

Я хочу преобразовать std::stringв нижний регистр. Я знаю о функции tolower(), однако в прошлом у меня были проблемы с этой функцией, и в любом случае она вряд ли идеальна, так как использование с std::stringтребовало бы итерации по каждому символу. Есть ли альтернатива, которая работает 100%...