Qt は、文字列が純粋な英語か、純粋な中国語か、純粋な数値か、英語か数値か、中国語か数値か、string\QString\int\float\double 相互の変換、フォルダーなどの操作を判断します。

プロジェクトで作業するときは、文字列、一般的な相互変換、フォルダーに対するいくつかの操作などを確認する必要があります。以下は概要の内容です。

1. 純粋な英語ですか?

bool IsEnglish(QString qstrSrc)
{
	QByteArray ba = qstrSrc.toLatin1();
	const char *s = ba.data();
	bool bret = true;
	while(*s)
	{
		if((*s>='A' && *s<='Z') || (*s>='a' && *s<='z'))
		{

		}
		else
		{
			bret = false;
			break;
		}
		s++;
	}
	return bret;
}

2. それは純粋な数字ですか?

bool IsNumber(QString qstrSrc)
{
	QByteArray ba = qstrSrc.toLatin1();
	const char *s = ba.data();
	bool bret = true;
	while(*s)
	{
		if(*s>='0' && *s<='9')
		{

		}
		else
		{
			bret = false;
			break;
		}
		s++;
	}
	return bret;
}

3. 純粋なデジタル合計かどうか。

bool IsNumber(QString qstrSrc)
{
    QByteArray ba = qstrSrc.toLatin1();
    const char *s = ba.data();
    bool bret = true;
    while(*s)
    {
        if(*s<'0' || *s>'9')
        {
            if(*s!='.')
            {
                bret = false;
                break;
            }
        }
        s++;
    }
    return bret;
}

4. それが純粋な数であるかどうか、そうであれば 1 つだけあります

bool IsNumber(QString qstrSrc)
{
    QByteArray ba = qstrSrc.toLatin1();
    const char *s = ba.data();
    bool bret = true;
    int iPoint=0;
    while(*s)
    {
        if(*s<'0' || *s>'9')
        {
            if(*s!='.')
            {
                bret = false;
                break;
            }
            else
            {
              iPoint++;
              if(iPoint>=2)
              {
                  bret = false;
                  break;
              }
            }
        }
        s++;
    }
    return bret;
}

5. 純粋な中国語ですか?

bool IsChinese(QString qstrSrc)
{
	QByteArray ba = qstrSrc.toLatin1();
	const char *s = ba.data();
	bool bret = true;
	while(*s)
	{
		if((*s>= 0x4E00) && (*s<= 0x9FA5))
		{

		}
		else
		{
			bret = false;
			break;
		}
		s++;
	}
	return bret;
}

6. 英語でもデジタルでも

bool IsEnglishOrNumber(QString qstrSrc)
{
	QByteArray ba = qstrSrc.toLatin1();
	const char *s = ba.data();
	bool bret = true;
	while(*s)
	{
		if((*s>='A' && *s<='Z') || (*s>='a' && *s<='z') || (*s>='0' && *s<='9'))
		{

		}
		else
		{
			bret = false;
			break;
		}
		s++;
	}
	return bret;
}

7. 中国語かデジタルか

bool IsChineseOrNumber(QString qstrSrc)
{
	int nCount = qstrSrc.count();
	bool bret = true;
	for(int i=0; i<nCount; ++i)
	{
		QChar cha = qstrSrc.at(i);
		ushort uni = cha.unicode();
		if((uni >= 0x4E00 && uni <= 0x9FA5)  || (uni >= '0' && uni <= '9'))
		{

		}
		else
		{
			bret = false;
			break;
		}
	}
	return bret;
}

8、string2Qstring、Qstring2string、tring2bool、string2int、string2double、string2float

QString string2Qstring(std::string str)
{
    QString qstr = QString::fromStdString(str);
    return qstr;
}

std::string Qstring2string(QString str)
{
    QByteArray cdata = str.toLocal8Bit();
    std::string cstr = std::string(cdata);
    return cstr;
}
bool string2bool(std::string str)
{
    if ( str.empty())
    {
        return false;
    }
    else
    {
        return true;
    }
}
int string2int(std::string str)
{
    if (str.length()==0)
    {
        return -1;
    }
    else
    {
        return std::stoi(str);   //系统提供数字转字符
    }
}
double string2double(std::string str)
{
    if (str.length()==0)
    {
        return -1;
    }
    else
    {
        return std::stod(str);   //系统提供数字转字符
    }
}
float string2float(std::string str)
{
    if (str.length()==0)
    {
        return -1;
    }
    else
    {
         return std::stof(str);   //系统提供数字转字符
    }
}

9. ファイルやフォルダーの作成、追加、削除、変更、確認等を行います。

//查找的是文件,不是文件夹
QStringList FindFile(std::string str)
{
     QString path=string2Qstring(str);
    // 获取所有文件夹名
    QDir dir(path);
    //path = dir.fromNativeSeparators(path);//  "\\"转为"/"
    QStringList allFile = QStringList("");
    dir.setFilter(QDir::Files);
    dir.setSorting(QDir::Name);
    allFile = dir.entryList();
    return  allFile;
}
QStringList FindFolder(std::string str,std::string inFolderName)
{
     QString folder=string2Qstring(str);
     QString Name=string2Qstring(inFolderName);
     QStringList result;
    // 获取所有文件夹名
    QDir dir(folder);
    folder = dir.fromNativeSeparators(folder);//  "\\"转为"/"
    QStringList allFolder = QStringList("");
    dir.setFilter(QDir::Dirs | QDir::NoDotAndDotDot);
    dir.setSorting(QDir::Name);
    allFolder = dir.entryList();
    result = allFolder.filter(Name);
    return  result;
}

QStringList IterateFolder(std::string str)
{
    QString folder=string2Qstring(str);
    // 获取所有文件夹名
    QDir dir(folder);
    folder = dir.fromNativeSeparators(folder);//  "\\"转为"/"
    QStringList allFolder = QStringList("");
    dir.setFilter(QDir::Dirs | QDir::NoDotAndDotDot);
    dir.setSorting(QDir::Name);
    allFolder = dir.entryList();
    return  allFolder;
}

//************************************
// 方法名称:	CreateFolder
// 概要:		创建文件夹
// 返回值:		bool
// 参数:		QString folderPath 文件夹路径
//************************************
bool CreateFolder(std::string str)
{
   QString folderPath= string2Qstring(str);
    //创建文件夹
    QDir dir(folderPath);
bool b=false;
    if (!dir.exists())
    {
       b= dir.mkpath(folderPath);
    }
    return true;
}
void OpenFile(std::string inINIPath,std::string inININame)
{//,QTextStream outFile
    QString QinINIPath=string2Qstring(inINIPath);
    QString QinININame=string2Qstring(inININame);
    QString QPath=QinINIPath+"\\"+QinININame;
    //初始化时加载文件路径
    QFile file(QPath);
    //以读写的方式打开文件,成功返回true,失败返回false
    //想用其他方式打开文件,请看上面的文件打开模式
    //先打开文件
    file.open(QIODevice::ReadWrite|QIODevice::ReadOnly|QIODevice::Text);
    //如果文件不存在,则创建并打开该文件
    //使用QTextStream一行一行读取文件
    QTextStream in(&file);
   // outFile=&in;
    /*
    while (!in.atEnd())
    {
        QString line = in.readLine();      //整行读取
        qDebug() << line;
    }
    */
    return;
}
bool CreateFile(std::string inINIPath,std::string inININame)
{
    //CreateFolder(inINIPath);
    QString QinINIPath=string2Qstring(inINIPath);
    QString QinININame=string2Qstring(inININame);
    QSettings *configIniWrite=new QSettings(QinINIPath+"\\"+QinININame,QSettings::IniFormat);
    configIniWrite->setIniCodec(QTextCodec::codecForName("GB2312"));//可读写ini文件中的中文
    //向ini文件中写入内容,setValue函数的两个参数对应键值,节:canshu;键:biaoti;值:激光检测
    configIniWrite->setValue("/canshu/biaoti","123 ");
    configIniWrite->setValue("/canshu/danwei","ABC ");
    configIniWrite->setValue("/shezhi/zhuangtai","正在扫描 ");
    delete configIniWrite;
   return true;
}
//************************************
// 方法名称:	RemoveFolder
// 概要:		移除文件夹
// 返回值:	bool
// 参数:		QString dirPath 文件夹路径
//************************************
bool RemoveFolder(std::string str)
{
    QString dirPath=string2Qstring(str);
    //移除文件夹
    QDir dirItem(dirPath);
    dirItem.removeRecursively();
    return true;
}
bool RemoveFile(std::string inINIPath,std::string inININame)
{
    QString QinINIPath=string2Qstring(inINIPath);
    QString QinININame=string2Qstring(inININame);
    //删除成功返回true,失败返回false
    return QFile::remove(QinINIPath+"\\"+QinININame);
}

おすすめ

転載: blog.csdn.net/weixin_56819992/article/details/130745075