325 lines
6.3 KiB
C++
325 lines
6.3 KiB
C++
#include "CStringType.h"
|
|
#include <QLabel>
|
|
char *m_temp=NULL;
|
|
CString::CString(const char *str)
|
|
{
|
|
m_temp=NULL;
|
|
if(str==NULL)
|
|
m_data ="";
|
|
else
|
|
m_data=QString::fromLocal8Bit(str);
|
|
}
|
|
CString::CString(const QString str)
|
|
{
|
|
m_temp=NULL;
|
|
if(str==NULL)
|
|
m_data ="";
|
|
else
|
|
m_data=str;
|
|
}
|
|
|
|
CString::~CString()
|
|
{
|
|
if(m_temp) delete m_temp;
|
|
m_temp=NULL;
|
|
};
|
|
void CString::Empty()
|
|
{
|
|
m_data ="";
|
|
}
|
|
|
|
CString::CString(const CString &other)
|
|
{
|
|
m_temp=NULL;
|
|
m_data=other.m_data;
|
|
}
|
|
int CString::GetLength()const
|
|
{
|
|
return m_data.length();
|
|
}
|
|
int CString::Find(char *str)
|
|
{
|
|
std::string dataStr=m_data.toStdString();
|
|
return dataStr.find(str);
|
|
}
|
|
int CString::Find(CString &another)
|
|
{
|
|
return m_data.toStdString().find(another.m_data.toStdString());
|
|
}
|
|
int CString::Find(char str)
|
|
{
|
|
std::string dataStr=m_data.toStdString();
|
|
return dataStr.find(str);
|
|
}
|
|
|
|
int CString::Find(char str[],int start)
|
|
{
|
|
std::string dataStr=m_data.toStdString();
|
|
int npos=dataStr.find(str);
|
|
if(npos==-1)
|
|
return -1;
|
|
if(npos<start)
|
|
return -1;
|
|
return dataStr.find(str);
|
|
}
|
|
int CString::ReverseFind(char ch)
|
|
{
|
|
int index=m_data.lastIndexOf(ch);
|
|
return index;
|
|
}
|
|
|
|
|
|
int CString::Insert(int pos ,const CString Sctr)
|
|
{
|
|
m_data.insert(pos,Sctr.m_data);
|
|
return m_data.length();
|
|
}
|
|
|
|
int CString::Replace(const char *Src,const char *Dest)
|
|
{
|
|
int length=((std::string)Src).length();
|
|
QString srcStr=QString::fromLocal8Bit(Src);
|
|
QString destStr=QString::fromLocal8Bit(Dest);
|
|
m_data.replace(srcStr,destStr);
|
|
return length;
|
|
}
|
|
void CString::Delete(int fromIndex,int length)
|
|
{
|
|
m_data=m_data.remove(fromIndex,length);
|
|
}
|
|
CString & CString::TrimLeft()
|
|
{
|
|
std::string findStr=" ";
|
|
std::string tempstr=m_data.toStdString();
|
|
QString temp=m_data;
|
|
vector<char>StrVector;
|
|
int left=0;
|
|
for (int i=0;i<tempstr.length();i++)
|
|
{
|
|
if(tempstr.at(i)==findStr.at(0)) {
|
|
left++;
|
|
continue;
|
|
}
|
|
else break;
|
|
}
|
|
m_data=temp.mid(left);
|
|
return *this;
|
|
}
|
|
CString & CString::MakeUpper()
|
|
{
|
|
m_data=m_data.toUpper();
|
|
return *this;
|
|
}
|
|
CString& CString::MakeLower()
|
|
{
|
|
m_data=m_data.toLower();
|
|
return *this;
|
|
}
|
|
CString & CString::TrimRight()
|
|
{
|
|
std::string findStr=" ";
|
|
std::string tempstr=m_data.toStdString();
|
|
QString temp=m_data;
|
|
int flag=0;
|
|
for (int i=tempstr.length()-1;i>-1;i--)
|
|
{
|
|
if(tempstr[i]==findStr.at(0)) {
|
|
continue;
|
|
}
|
|
else {
|
|
flag=i;
|
|
break;
|
|
}
|
|
}
|
|
m_data=temp.left(flag+1);
|
|
return *this;
|
|
}
|
|
bool CString::operator==(const char* other )
|
|
{
|
|
QString srcStr=QString::fromLocal8Bit(other);
|
|
if(this->m_data==srcStr)
|
|
return true;
|
|
return false;
|
|
}
|
|
bool CString::operator!=(const char* other )
|
|
{
|
|
QString srcStr=QString::fromLocal8Bit(other);
|
|
if(this->m_data!=srcStr)
|
|
return true;
|
|
return false;
|
|
}
|
|
char CString::operator[](int i)
|
|
{
|
|
char ch=GetChar(i);
|
|
return ch;
|
|
}
|
|
CString CString::Right(int count)const
|
|
{
|
|
if (count<0)
|
|
{
|
|
count=0;
|
|
}
|
|
if (count>m_data.length())
|
|
{
|
|
return *this;
|
|
}
|
|
int length=m_data.length();
|
|
QString temp=m_data;
|
|
QString lastdata=temp.remove(0,length-count);
|
|
CString RightStr(lastdata);
|
|
return RightStr;
|
|
}
|
|
CString CString::Mid(int pos,int count)const
|
|
{
|
|
if (count<0)
|
|
{
|
|
count=0;
|
|
}
|
|
QString temp=m_data.mid(pos,count);
|
|
CString mstr(temp);
|
|
return mstr;
|
|
}
|
|
CString CString::Mid(int pos)const
|
|
{
|
|
QString temp=m_data.mid(pos);
|
|
CString mstr(temp);
|
|
return mstr;
|
|
}
|
|
|
|
CString CString::Left(int count)const
|
|
{
|
|
if (count<0)
|
|
{
|
|
count=0;
|
|
}
|
|
if (count>m_data.length())
|
|
{
|
|
return *this;
|
|
}
|
|
int length=m_data.length();
|
|
QString temp=m_data;
|
|
QString lastdata=temp.remove(count,length-count);
|
|
CString leftStr(lastdata);
|
|
return leftStr;
|
|
}
|
|
|
|
CString CString::operator + (const CString& SrcStr)
|
|
{
|
|
CString str;
|
|
str.m_data=m_data+SrcStr.m_data;
|
|
return str;
|
|
}
|
|
/*
|
|
CString CString::operator = (const QString& SrcStr)
|
|
{
|
|
CString str;
|
|
str.m_data=SrcStr;
|
|
return str;
|
|
}
|
|
*/
|
|
CString CString::operator += (CString& SrcStr)
|
|
{
|
|
m_data = m_data+SrcStr.m_data ;
|
|
return *this;
|
|
}
|
|
CString CString::operator += (const CString& SrcStr)
|
|
{
|
|
m_data = m_data+SrcStr.m_data ;
|
|
return *this;
|
|
}
|
|
bool CString::operator!=(const CString& other )
|
|
{
|
|
return m_data!=other.m_data;
|
|
}
|
|
bool CString::operator==(const CString& other )
|
|
{
|
|
return m_data==other.m_data;
|
|
}
|
|
|
|
void CString::Alloc(int len)
|
|
{
|
|
}
|
|
char* CString::GetString() const
|
|
{
|
|
int length=((string)(m_data.toLocal8Bit().data())).length();
|
|
if(m_temp) delete m_temp;
|
|
m_temp=new char[length+1];
|
|
// Alloc(length);
|
|
strcpy(m_temp,m_data.toLocal8Bit().data());
|
|
return m_temp;
|
|
}
|
|
char CString::GetChar(int n)
|
|
{
|
|
return GetString()[n];
|
|
}
|
|
char CString::GetAt(int n)
|
|
{
|
|
return GetChar(n);
|
|
}
|
|
|
|
void CString::Format(const char *format,...)
|
|
{
|
|
//char *str=GetString();
|
|
va_list args;
|
|
va_start(args,format);
|
|
m_data.vsprintf(format,args);
|
|
char *buf=new char[2*strlen(m_data.toStdString().c_str())+1];
|
|
vsprintf(buf,format,args);
|
|
m_data=buf;
|
|
delete buf;
|
|
va_end(args);
|
|
}
|
|
void ShowMessage(QString mess)
|
|
{
|
|
QDialog dialog(NULL);
|
|
dialog.setModal(false);
|
|
Qt::WindowFlags flags = dialog.windowFlags();
|
|
flags |= Qt::WindowStaysOnTopHint;
|
|
flags &= ~Qt::WindowContextHelpButtonHint;
|
|
dialog.setWindowFlags(flags);
|
|
dialog.setWindowTitle("提示");
|
|
QFormLayout form(&dialog);
|
|
QLabel edit(&dialog);
|
|
form.addRow(&edit);
|
|
edit.setText(mess);
|
|
// QDialogButtonBox buttonBox(QDialogButtonBox::Yes,Qt::Horizontal, &dialog);
|
|
// form.addRow(&buttonBox);
|
|
// if(buttonBox.button(QDialogButtonBox::Yes)) buttonBox.button(QDialogButtonBox::Yes)->setText("退出");
|
|
// QObject::connect(buttonBox.button(QDialogButtonBox::Yes), SIGNAL(clicked()), NULL, SLOT(reject()));
|
|
dialog.show();
|
|
dialog.exec();
|
|
}
|
|
int AfxMessageBox(CString str)
|
|
{
|
|
QDialog dialog(NULL);
|
|
dialog.setModal(false);
|
|
Qt::WindowFlags flags = dialog.windowFlags();
|
|
flags |= Qt::WindowStaysOnTopHint;
|
|
flags &= ~Qt::WindowContextHelpButtonHint;
|
|
dialog.setWindowFlags(flags);
|
|
dialog.setWindowTitle("提示");
|
|
QFormLayout form(&dialog);
|
|
form.addWidget(new QLabel(str.GetString()));
|
|
// dialog.show();
|
|
if (dialog.exec() == QDialog::Accepted) {
|
|
// Do something here
|
|
}
|
|
// return MessageBox(NULL,"提示",str.GetString(),NULL );
|
|
// QString cstr=str.GetString();
|
|
// QMessageBox msgBox;
|
|
// msgBox.setText(cstr);
|
|
// return msgBox.exec();
|
|
return 1;
|
|
}
|
|
|
|
int MessageBox(QWidget *parent,char lpText[128],char*lpCaption, int UINTuType)
|
|
{
|
|
if (!parent)
|
|
{
|
|
char *tempName=lpCaption;
|
|
QString addStr=QString::fromLocal8Bit(tempName);
|
|
return QMessageBox::information(NULL,lpText,addStr,QMessageBox::Ok);
|
|
}
|
|
return 0;
|
|
}
|