瀏覽代碼

fix toupper and tolower

blueloveTH 2 年之前
父節點
當前提交
ea2e16c931
共有 1 個文件被更改,包括 8 次插入2 次删除
  1. 8 2
      src/str.cpp

+ 8 - 2
src/str.cpp

@@ -208,13 +208,19 @@ int utf8len(unsigned char c, bool suppress){
 
     Str Str::lower() const{
         std::string copy(data, size);
-        std::transform(copy.begin(), copy.end(), copy.begin(), [](unsigned char c){ return std::tolower(c); });
+        std::transform(copy.begin(), copy.end(), copy.begin(), [](unsigned char c){
+            if('A' <= c && c <= 'Z') return c + ('a' - 'A');
+            return (int)c;
+        });
         return Str(copy);
     }
 
     Str Str::upper() const{
         std::string copy(data, size);
-        std::transform(copy.begin(), copy.end(), copy.begin(), [](unsigned char c){ return std::toupper(c); });
+        std::transform(copy.begin(), copy.end(), copy.begin(), [](unsigned char c){
+            if('a' <= c && c <= 'z') return c - ('a' - 'A');
+            return (int)c;
+        });
         return Str(copy);
     }