📄 str_fns.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 + -