Files
core/Common/DocxFormat/Source/MathEquation/String.h

119 lines
1.9 KiB
C++

#ifndef _MATH_EQUATION_STRING_H
#define _MATH_EQUATION_STRING_H
#include <string>
namespace MathEquation
{
#define STRING_NOTFOUND std::string::npos
class String
{
public:
String() {}
String(const char* val) : Value(val){}
String(std::string val) : Value(val){}
String &operator=(String &other)
{
Value = other.Value;
return (*this);
}
String &operator+=(const String &other)
{
Value += other.Value;
return (*this);
}
String &operator+=(const char* sChars)
{
Value += std::string(sChars);
return (*this);
}
String &operator+=(const char unChar)
{
char oChars[2];
oChars[0] = unChar; oChars[1] = 0x00;
Value += std::string((char*)&oChars);
return (*this);
}
void Append(const char* str)
{
Value.append(str);
}
void Append(String str)
{
Value.append(str.Value);
}
void Append(unsigned short ushUnicode)
{
char oChars[2];
oChars[0] = ushUnicode; oChars[1] = 0x00;
Value += std::string((char*)&oChars);
}
void AppendAscii(const char *sChars)
{
Value += std::string(sChars);
}
void Erase(int nPos = 0, int nLen = std::string::npos)
{
Value.erase(nPos, nLen);
}
int Len()
{
return (int)Value.length();
}
BYTE GetChar(int nPos)
{
return Value[nPos];
}
void InsertAscii(const char* str, int nPos)
{
Value.insert(nPos, str);
}
void Insert(String str, int nPos)
{
Value.insert(nPos, str.Value);
}
int SearchBackward(char nChar)
{
return (int)Value.rfind(nChar);
}
static String CreateFromInt32(int nValue)
{
#if defined(_WIN32) || defined (_WIN64)
char intStr[32];
_itoa_s(nValue, (char *)&intStr, 32, 10);
return String(intStr);
#else
return std::to_string(nValue);;
#endif
}
std::string GetValue()
{
return Value;
}
private:
std::string Value;
};
}
#endif