用于C++字符串的tolower函数

bre*_*ett 14 c++ tolower

是否有内置函数将C++字符串从大写字母转换为小写字母?如果没有将它转换为cstring并且在每个char上使用tolower是唯一的选择?

非常感谢你提前.

ere*_*eOn 25

如果boost是一个选项:

#include <boost/algorithm/string.hpp>    

std::string str = "wHatEver";
boost::to_lower(str);
Run Code Online (Sandbox Code Playgroud)

否则,您可以使用std::transform:

std::string str = "wHatEver";
std::transform(str.begin(), str.end(), str.begin(), ::tolower);
Run Code Online (Sandbox Code Playgroud)

如果您具有某些自定义区域设置,则还可以使用其他功能tolower.


小智 11

std::transform(myString.begin(), myString.end(), myString.begin(), std::tolower);
Run Code Online (Sandbox Code Playgroud)

  • 这个和其他转换+ tolower答案应该考虑到这不一定会编译,这取决于此文件中包含的标准头.在`<cctype>`中有一个`tolower`,在`<locale>`中有一个重载.如果两者都包括在内,您将收到编译器错误.例如:http://stackoverflow.com/questions/1350380/problems-using-stl-stdtransform-from-cygwin-g (5认同)
  • 请注意,这个答案(以及所有其他“transform”答案)可能会导致未定义的行为,因为“cstdlib”的“std::tolower”需要非负参数 (2认同)