【QT】字符串与输入输出

目录

1.普通数值与字符串之间的转换

2.进制转换

3.字符串与数值转换应用示例

4.QString 常用功能

5.QString 常用功能应用示例

1.普通数值与字符串之间的转换

QString类从字符串转换为整数的函数有:
int toInt(bool *ok = Q_NULLPTR,int base = 10)  const
long toLong(bool *ok = Q_NULLPTR,int base = 10)  const
shourt toShort(bool *ok = Q_NULLPTR,int base = 10)  const
uint toUInt(bool *ok = Q_NULLPTR,int base = 10)  const
uint toULong(bool *ok = Q_NULLPTR,int base = 10)  const
这些函数如果不设置参数,缺省表示从十进制表示的字符串转换为整数;若指定整数基参数, 还可以直接将二进制、十六进制字符串转换为整数。
QString将字符串转换为浮点数的函数有:
double toDouble(bool *ok = Q_NULLPTR)  const
float toFloat(bool *ok = Q_NULLPTR)  const
浮点数转换为QString,且保留浮点数两位小数:
QString str;
float flo=3.141;
//使用QString的静态函数number()和asprintf()
str = QString::number(flo,'f',2);
str = QString::asprintf("%.2f",flo);
//使用公共函数setNum()和sprintf()
str = str.setNum(flo,'f',2);
str = str.sprintf("%.2f",flo);

2.进制转换

QString的函数setNum()或静态函数number()有多个重载函数定义,可以处理各种类型的整数和浮点数,在处理整数时还可以指定进制。它们的函数原型是:
QString &setNum(int n,int base = 10)
QString number(int n,int base = 10)
其中n是待转换的整数,base是使用的进制,缺省为十进制,也可以指定为十六进制和二进制。

3.字符串与数值转换应用示例

(1)widget.h文件:
#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>

namespace Ui {
class Widget;
}

class Widget : public QWidget
{
    Q_OBJECT

public:
    explicit Widget(QWidget *parent = 0);
    ~Widget();

private slots:
    void on_btnCal_clicked();  //计算 按键单击响应

    void on_btnDec_clicked();   //十进制转换为其他进制

    void on_btnBin_clicked();   //二进制转换为其他进制

    void on_btnHex_clicked();   //十六进制转换为其他进制

private:
    Ui::Widget *ui;
};

#endif // WIDGET_H

(2)widget.cpp文件

#include "widget.h"
#include "ui_widget.h"
#include    <QString>

Widget::Widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Widget)
{
    ui->setupUi(this);
}

Widget::~Widget()
{
    delete ui;
}

void Widget::on_btnCal_clicked()
{ //计算 按键单击响应
    int num=ui->editNum->text().toInt(); //读取字符串为整数
    float price=ui->editPrice->text().toFloat();//读取字符串为浮点数

    float total=num*price;//相乘计算
    QString str;
//    str=str.setNum(total,'f',2); //浮点数2位小数
    str=str.sprintf("%.2f",total); //格式化输出浮点数
    ui->editTotal->setText(str);//在文本框里显示

//    QString  str2="卖";
//    QString  str3="拐";
//    QString  str1=str2;
//    str1.append(str3);
//    str2.prepend(str3);

}

void Widget::on_btnDec_clicked()
{ //读取十进制数,转换为其他进制
    int val=ui->editDec->text().toInt();//读取十进制数
    QString str=QString::number(val,16);// 显示为16进制 的字符串
//    str=str.setNum(val,16);//16进制
    str=str.toUpper(); //转换为全大写字母
    ui->editHex->setText(str);//显示16进制字符串

//    str=str.setNum(val,2);  //2进制
    str=QString::number(val,2);// 显示2进制的字符串
    ui->editBin->setText(str);//显示二进制字符串
}

void Widget::on_btnBin_clicked()
{ //读取二进制数,转换为其他进制的数
    bool ok;

    int val=ui->editBin->text().toInt(&ok,2);//以二进制数读入

//    str=str.setNum(val,2);//显示为2进制字符串
    QString str=QString::number(val,10);//数字显示为10进制字符串
    ui->editDec->setText(str);//显示10进制数字符串

//    str=str.setNum(val,16);//显示十六进制
    str=QString::number(val,16);//显示为十六进制字符串
    str=str.toUpper(); //全大写字母
    ui->editHex->setText(str);//显示十六进制字符串
}

void Widget::on_btnHex_clicked()
{//读取16进制数,转换为其他进制的数
    bool ok;

    int val=ui->editHex->text().toInt(&ok,16);//以十六进制数读入
//    str=str.setNum(val,10);//显示为10进制字符串
    QString str=QString::number(val,10);// 显示为10进制字符串
    ui->editDec->setText(str);//显示为10进制字符串

//    str=str.setNum(val,2);//显示为2进制字符串
    str=QString::number(val,2);// 显示二进制字符串
    ui->editBin->setText(str);//显示二进制字符串
}

(3)main.cpp文件

#include "widget.h"
#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    Widget w;
    w.show();

    return a.exec();
}

(4)UI界面

4.QString 常用功能

QString是Qt编程中常用的类,除了用作数字量的输入输出之外,Qstring还有很多其他功能。QString存储字符串采用的是Unicode码,每一个字符是一个16位的QChar,而不是8位的char,所以QString处理中文字符没有问题,而且一个汉字算作是一个字符。

  • append()和prepend()

append()在字符串的后面添加字符串,prepend()在字符串的前面添加字符串,如:

QString str1 = "卖",str2="拐";

QString str3 = str1;

str1·append(str2);//str1 ="卖拐"

str3.prepend(str2);//str3 ="拐卖"

  • toUpper()和toLower()

toUpper()将字符串内的字母全部转换为大写形式,toLower()将字母全部转换为小写形式,如:

QString str1="Hello,World",str2;

str2=str1·toUpper();//str1="HELLO,WORLD"

str2=str1·toLower();//strl="hello,world"

  • count()、size()和length()

count()、size()和length()都返回字符串的字符个数,这3个函数是相同的,但是要注意,字符串中如果有汉字,一个汉字算一个字符。

QString str="NI好";

N=str1·count();//N = 3

N=str1,size();//N = 3

N=str1·lengt();//N = 3

  • trimmed()和simplified()

trimmed()去掉字符串首尾的空格,simpli行ed()不仅去掉首尾的空格,中间连续的空格也用一个空格替换。

QString str1="     Are       you      OK?     ",str2;

str2=str1,trimmed();//str1 = "Are       you      OK?"

str2=str1.simplified();//str1 = "Are you OK?"

  • indexOf()和lastlndexOf()

indexOf()函数的原型为:

int indexOf(const QString&str,int from=0,Qt::CaseSensitivity cs=Qt::CaseSensitive)

其功能是在自身字符串内查找参数字符串str出现的位置,参数from是开始查找的位置,Qt::Casesensitivitycs参数指定是否区分大小写。

lastlndexOf()函数则是查找某个字符串最后出现的位置。

QString str1="G:\Qt5Book\QT5.9Study\qw.cpp"

N=str1.indexOf("5.9");//N=13

N=strl.lastIndexOf("\\");//N=21

“\”是转义字符,如果要查找“\”,需要输入“\\”。

  • isNull()和isEmpty()

两个函数都判读字符串是否为空,但是稍有差别。如果一个空字符串,只有“\0”,isNull()返回false,而isEmpty()返回true;只有未赋值的字符串,isNuII()才返回true。

QString str1,str2="";

N=str1·isNull();//N=true   未赋值字符串变量

N=str2.isNull();//N=false    只有"\0"的字符串,也不是Null

N=str1.isEmpty();//N=true

N=str2.isEmpty();//N=true

QString只要赋值,就在字符串的末尾自动加上“\0”,所以,如果只是要判断字符串内容是

否为空,常用isEmpty()。

  • contains()

判断字符串内是否包含某个字符串,可指定是否区分大小写。

QString str1 = "G:\Qt5Book\QT5.9Study\qw.cpp";

N=str1.contains(".cpp",Qt::CaseInsensitive);//N=true,不区分大小写

N=str1.contains(".CPP",Qt::CaseSensitive);//N=false,区分大小写

  • endsWith()和startsWith()

startsWith()判断是否以某个字符串开头,endsWith()判断是否以某个字符串结束。

QString str1 = "G:\Qt5Book\QT5.9Study\qw.cpp";

N=str1.startsWith(".cpp",Qt::CaseInsensitive);//N=true,不区分大小写

N=str1.endsWith(".CPP",Qt::CaseSensitive);//N=false,区分大小写

N=str1.startsWith("g: ");//N = true,缺省为不区分大小写

  • left()和right()

left表示从字符串中取左边多少个字符,right表示从字符串中取右边多少个字符。注意,一个汉字被当作一个字符。

QString str2,str1 ="学生姓名,男,1984-3-4,汉族,山东";

N = str1.indexOd(",");//N=4,第一个","出现的位置

str2 = str1.left(N);//str2 ="学生姓名"

N =str1.lastIndexOf(","); //N=18,最后一个","出现的位置

str2 = str1.right(str1.size()-N-1);//str2 = "山东",提取最后一个逗号之后的字符串

  • section()

section()函数的原型为:

QString section (const QString &sep, int start, int end =-1,SectionFlags flags = SectionDefault) const

其功能是从字符串中提取以sep作为分隔符,从start端到end端的字符串。

QString str2,str1 ="学生姓名,男,1984-3-4,汉族,山东";

str2 = str1.section(",",0,0);//str2= "学生姓名",第1段的编号为0

str2 = str1.section(",",1,1);//str2= "男"

str2 = str1.section(",",0,1);//str2= "学生姓名,男"

str2 = str1.section(",",4,4);//str2= "山东"

5.QString 常用功能应用示例

(1)widget.h文件

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>

namespace Ui {
class Widget;
}

class Widget : public QWidget
{
    Q_OBJECT

public:
    explicit Widget(QWidget *parent = 0);
    ~Widget();

private slots:
    void on_pushButton_clicked();

    void on_pushButton_2_clicked();

    void on_pushButton_3_clicked();

    void on_pushButton_4_clicked();

    void on_pushButton_5_clicked();

    void on_pushButton_6_clicked();

    void on_pushButton_7_clicked();

    void on_pushButton_8_clicked();

    void on_pushButton_9_clicked();

    void on_pushButton_10_clicked();

    void on_pushButton_11_clicked();

    void on_pushButton_12_clicked();

    void on_pushButton_13_clicked();

    void on_pushButton_14_clicked();

    void on_pushButton_15_clicked();

    void on_pushButton_16_clicked();

    void on_pushButton_17_clicked();

    void on_pushButton_18_clicked();

private:
    Ui::Widget *ui;
};

#endif // WIDGET_H

(2)widget.cpp文件

#include "widget.h"
#include "ui_widget.h"


Widget::Widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Widget)
{
    ui->setupUi(this);
}


Widget::~Widget()
{
    delete ui;
}


void Widget::on_pushButton_clicked()
{//append()函数
    QString str1,str2;
    str1=ui->comboBox1->currentText();
    str2=ui->comboBox2->currentText();
    str1.append(str2);


    ui->edtResult->setText(str1);
}


void Widget::on_pushButton_2_clicked()
{//prepend()函数
    QString str1,str2;
    str1=ui->comboBox1->currentText();
    str2=ui->comboBox2->currentText();
    str1.prepend(str2);


    ui->edtResult->setText(str1);
}


void Widget::on_pushButton_3_clicked()
{//contains()函数
    QString str1,str2;
    str1=ui->comboBox1->currentText();
    str2=ui->comboBox2->currentText();


    bool chk;
    chk=str1.contains(str2);
    ui->checkBox->setChecked(chk);
    ui->checkBox->setText("contains()");
    ui->checkBox->sizeHint();
}


void Widget::on_pushButton_4_clicked()
{//count()函数
    QString str1=ui->comboBox1->currentText();
    int i=str1.count();
//    int i=str1.length();
    ui->spinBox->setValue(i);
    ui->LabSpin->setText("count()");
}


void Widget::on_pushButton_5_clicked()
{//size()函数
    QString str1;
    str1=ui->comboBox1->currentText();
    int i=str1.size();
    ui->spinBox->setValue(i);
    ui->LabSpin->setText("size()");


}


void Widget::on_pushButton_6_clicked()
{//endsWith()函数
    QString str1,str2;
    str1=ui->comboBox1->currentText();
    str2=ui->comboBox2->currentText();


    bool chk;
    chk=str1.endsWith(str2);
    ui->checkBox->setChecked(chk);
    ui->checkBox->setText("endsWith()");
    ui->checkBox->sizeHint();
}


void Widget::on_pushButton_7_clicked()
{//indexOf()函数
    QString str1,str2;
    str1=ui->comboBox1->currentText();
    str2=ui->comboBox2->currentText();


    int i;
    i=str1.indexOf(str2);
    ui->spinBox->setValue(i);
    ui->LabSpin->setText("indexOf()");
}


void Widget::on_pushButton_8_clicked()
{//isEmpty()函数
    QString str1;
    str1=ui->comboBox1->currentText();
    bool chk;
    chk=str1.isEmpty();
    ui->checkBox->setChecked(chk);
    ui->checkBox->setText("isEmpty()");
    ui->checkBox->sizeHint();
}


void Widget::on_pushButton_9_clicked()
{//lastIndexOf()函数
    QString str1,str2;
    str1=ui->comboBox1->currentText();
    str2=ui->comboBox2->currentText();


    int i;
    i=str1.lastIndexOf(str2);
    ui->spinBox->setValue(i);
    ui->LabSpin->setText("lastIndexOf()");
}


void Widget::on_pushButton_10_clicked()
{//startsWith()函数
    QString str1,str2;
    str1=ui->comboBox1->currentText();
    str2=ui->comboBox2->currentText();


    bool chk;
    chk=str1.startsWith(str2);
    ui->checkBox->setChecked(chk);
    ui->checkBox->setText("startsWith()");
    ui->checkBox->sizeHint();
}


void Widget::on_pushButton_11_clicked()
{//toUpper()函数
    QString str1,str2;
    str1=ui->comboBox1->currentText();
    str2=str1.toUpper();


    ui->edtResult->setText(str2);
}


void Widget::on_pushButton_12_clicked()
{//toLower()函数
    QString str1,str2;
    str1=ui->comboBox1->currentText();
    str2=str1.toLower();


    ui->edtResult->setText(str2);
}


void Widget::on_pushButton_13_clicked()
{//trimmed()函数
    QString str1;
    str1=ui->comboBox1->currentText();
    str1=str1.trimmed();


    ui->edtResult->setText(str1);


}


void Widget::on_pushButton_14_clicked()
{//section()函数
    int i;
    QString str1,str2,str3;
    str1=ui->comboBox1->currentText();
    i=ui->spinBox->value();
//    str2=str1.section('\\',2,2);
    str3=ui->comboBox2->currentText();
    if (QString::compare(str3,"\\",Qt::CaseInsensitive)==0)
        str2=str1.section('\\',i,i+1); //
    else
        str2=str1.section(str3,i,i+1); //


    ui->edtResult->setText(str2);
}


void Widget::on_pushButton_15_clicked()
{//left()函数
    QString str1,str2;
    str1=ui->comboBox1->currentText();
    int v=ui->spinBox->value();
    str2=str1.left(v);
    ui->edtResult->setText(str2);
}


void Widget::on_pushButton_16_clicked()
{//right()函数
    QString str1,str2;
    str1=ui->comboBox1->currentText();
    int cnt=str1.size();
    int v=ui->spinBox->value();
    str2=str1.right(cnt-v-1);
    ui->edtResult->setText(str2);
}


void Widget::on_pushButton_17_clicked()
{//simplified()函数
    QString str1;
    str1=ui->comboBox1->currentText();
    str1=str1.simplified();
    ui->edtResult->setText(str1);
}


void Widget::on_pushButton_18_clicked()
{//isNull()函数
    QString str1;
    str1=ui->comboBox1->currentText();
    bool chk;
    chk=str1.isNull();
    ui->checkBox->setChecked(chk);
    ui->checkBox->setText("isNull()");
    ui->checkBox->sizeHint();
}

(3)main.cpp文件

#include "widget.h"
#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    Widget w;
    w.show();

    return a.exec();
}

(4)UI界面

相关推荐

  1. QT-输入输出

    2023-12-07 10:32:03       17 阅读

最近更新

  1. TCP协议是安全的吗?

    2023-12-07 10:32:03       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2023-12-07 10:32:03       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2023-12-07 10:32:03       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2023-12-07 10:32:03       20 阅读

热门阅读

  1. 计算机视觉(CV)技术的优势和挑战-AI生成版

    2023-12-07 10:32:03       35 阅读
  2. Blocking_Analyzer_1.7_For_MySQL_8.0.exe

    2023-12-07 10:32:03       33 阅读
  3. 生活、工作常用API免费接口

    2023-12-07 10:32:03       27 阅读
  4. 梦想与魔法:编程之路的挑战与荣耀

    2023-12-07 10:32:03       29 阅读
  5. 5-redis高级-哨兵

    2023-12-07 10:32:03       33 阅读
  6. MacOS查看JDK版本或卸载

    2023-12-07 10:32:03       28 阅读