Tatsuhiro Tsujikawa пре 12 година
родитељ
комит
3b7566faf1
1 измењених фајлова са 19 додато и 16 уклоњено
  1. 19 16
      src/util.h

+ 19 - 16
src/util.h

@@ -172,25 +172,28 @@ void divide
 }
 
 template<typename T>
-std::string uitos(T value, bool comma = false)
+std::string uitos(T n, bool comma = false)
 {
-  std::string str;
-  if(value == 0) {
-    str = "0";
-    return str;
-  }
-  int count = 0;
-  while(value) {
-    ++count;
-    char digit = value%10+'0';
-    if(comma && count > 3 && count%3 == 1) {
-      str += ",";
+  std::string res;
+  if(n == 0) {
+    res = "0";
+    return res;
+  }
+  int i = 0;
+  T t = n;
+  for(; t; t /= 10, ++i);
+  if(comma) {
+    i += (i-1)/3;
+  }
+  res.resize(i);
+  --i;
+  for(int j = 0; n; --i, ++j, n /= 10) {
+    res[i] = (n%10) + '0';
+    if(comma && (j+1)%3 == 0) {
+      res[--i] = ',';
     }
-    str += digit;
-    value /= 10;
   }
-  std::reverse(str.begin(), str.end());
-  return str;
+  return res;
 }
 
 std::string itos(int64_t value, bool comma = false);