⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 str_fns.cpp

📁 自编的一个String类
💻 CPP
字号:
// *************** convert integer or double to string etc *****************#define WANT_STREAM#define WANT_MATH#include "str.h"#include "str_fns.h"String ToString(int value)// convert signed integer to string{   bool negative;   if (value < 0) { value = -value; negative = true; }   else if (value == 0) return String("0");   else negative = false;   char b[100]; b[99] = (char)0; int i = 99;   while (value > 0)   {      int nv = value / 10; int rm = value - nv * 10;      b[--i] = (char)(rm + '0'); value = nv;      if (i<=0) return ("*****");   }   if (negative) b[--i] = '-';   return String(b+i);}String ToString(long value)// convert signed long to string{   bool negative;   if (value < 0) { value = -value; negative = true; }   else if (value == 0) return String("0");   else negative = false;   char b[100]; b[99] = (char)0; int i = 99;   while (value > 0)   {      long nv = value / 10; long rm = value - nv * 10;      b[--i] = (char)(rm + '0'); value = nv;      if (i<=0) return ("*****");   }   if (negative) b[--i] = '-';   return String(b+i);}String ToString(double value, int ndec)// convert double to string, ndec = number of decimals{   bool negative;   if (value < 0) { value = -value; negative = true; }   else negative = false;   if (value >= 1000000L) return ("*****");   double p = pow(10,ndec); double i; double f = modf(value, &i);   f = floor(f * p + 0.5);   if (f >= p) i += 1.0; else f += p;   long li = (long)i; long lf = (long)f; long lp = (long)p;   if (!li && lf==lp) negative = false;   String si = ToString(li); String sf = ToString(lf); sf[0] = '.';   if (negative) return String("-")+si+sf; else return si+sf;}void UpperCase(String& S){   unsigned int n = S.size();   for (unsigned int j = 0; j < n; j++)   {      char sj = S[j];      if (sj >= 'a' && sj <= 'z') S[j] = (char)(sj - ('a' - 'A'));   }}void LowerCase(String& S){   unsigned int n = S.size();   for (unsigned int j = 0; j < n; j++)   {      char sj = S[j];      if (sj >= 'A' && sj <= 'Z') S[j] = (char)(sj + ('a' - 'A'));   }}bool IsInt(const String& S){   unsigned int n = S.size();   unsigned int i = S.find_first_not_of(" \t");   if (i == String::npos) return false;         // do not accept blanks   if (S[i] == '-' || S[i] == '+')              // sign   {      i++;      if (i >= n || S[i] == ' ' || S[i] == '\t')         return false;                          // nothing following sign   }   for (unsigned int i1 = i; i1 < n; ++i1)   {      if (S[i1] < '0' ||  S[i1] > '9')      {         unsigned int i2 = S.find_first_not_of(" \t", i1);         return i2 == String::npos;            // trailing blanks?      }   }   return true;}// don't allow E format at presentbool IsFloat(const String& S){   unsigned int n = S.size();   bool dp = false;                             // have decimal point   unsigned int i = S.find_first_not_of(" \t");   if (i == String::npos) return false;         // do not accept blanks   if (S[i] == '-' || S[i] == '+')              // sign   {      i++;      if (i >= n || S[i] == ' ' || S[i] == '\t')         return false;                          // nothing following sign   }   bool nos = false;   for (unsigned int i1 = i; i1 < n; i1++)   {      if (S[i1] < '0' || S[i1] > '9')      {         if (S[i1] == '.')         {            if (dp) return false;               // two decimals            dp = true;         }         else         {            unsigned int i2 = S.find_first_not_of(" \t", i1);            return i2 == String::npos;          // trailing blanks?         }      }      else nos = true;                          // at least one digit   }   return nos;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -