Skip to content

Latest commit

 

History

History
26 lines (21 loc) · 1.13 KB

cplusplus_string_case_convert.md

File metadata and controls

26 lines (21 loc) · 1.13 KB

C++ string 转换大小写

#include <string>
#include <algorithm>

void CString::StringToUpper(std::string &str)
{
    std::transform(str.begin(), str.end(), str.begin(), ::toupper);
}

void CString::StringToLower(std::string &str)
{
    std::transform(str.begin(), str.end(), str.begin(), ::tolower);
}
  • 提示出错error: no matching function for call to ‘transform(__gnu_cxx::__normal_iterator<char*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, __gnu_cxx::__normal_iterator<char*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, __gnu_cxx::__normal_iterator<char*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, <unknown type>)’的解决方法:既有 C 版本的toupper/tolower函数,又有 STL 模板函数toupper/tolower,二者存在冲突,在toupper/tolower前加上::表示强制指定 C 版本的
  • ::toloweer/::toupper 只用于单字节字符的替换,不适用于多字节编码(如 UTF-8)?
  • 可使用 boost 库
#include <boost/algorithm/string.hpp>
using namespace boost;
// use to_lower/to_upper function