QTextStream
QTextStream 类为读取和写入文本提供了一个方便的接口可以在QIODevice、QBateArray、和QString中使用,QTextStream使用的是流运算符(>> <<),可以更方便的读/写数据,QTextStream也支持对字段进行格式的选项支持。
构造函数:

    QTextStream stream("aaaaaaaaaaaaa");//读取字符串
    QFile file("D:/Qt_text/456.txt");
    QTextStream stream1(&file);//读取文件常用函数 :
| read() | 读取数据,作为QString返回 | 
| readLine() | 读取一行数据,作为QString返回 | 
| readAll() | 读取全部数据,作为QString返回 | 
| readLineInto(QString*line ,qin64) | 将读取的一行数据存放到lime中(Qt 5.5中引入) | 
| pos() | 获取当前流的位置 | 
| seek() | 调整流的位置 | 
| flush() | 刷新 | 
| reset() | 格式化选项 | 
| resetStates() | 格式化状态 | 
| setAutoDetectUnicode(bool) | 如果启用为 true,QTextStream将尝试通过查看流数据来检测 Unicode 编码 | 
| setCodec() | 设置流的编解码器,编解码器用于解码从分配的设备读取的任何数据,以及编码写入的任何数据 | 
| setDevice() | 设置设备 | 
| setFieldAlignment() | 设置字段对齐方式 | 
| setFieldWidth() | 设置字段宽度 | 
| setIntegerBase() | 设置数字的进制数,默认为10 | 
| setNumberFlags() | 设置数字标志 | 
| setPadChar() | 设置填充字符 | 
| setRealNumberNotation() | 设置数字表示方法(智能记数法、固定记数法、科学计数法) | 
| setRealNumberPrecision() | 设置精度 | 
| setStatus() | 设置流的状态 | 
| setString() | 设置字符串 | 
| skipWhiteSpace() | 从流中读取和丢弃空格,直到检测到非空格字符,或者直到atEnd() | 
| >>(object) | 读取流中的数据到object | 
| <<(data) | 输入数据data到流中 | 
| qSetFieldWidth(intwidth) | 相当于setFieldWidth() | 
| qSetPadChar(QChar ch) | 相当于setPadChar() | 
| qSetRealNumberPrecision(intprecision) | 相当于setRealNumberPrecision() | 
QTextStream::FieldAlignment(对齐方式)
| QTextStream::AlignLeft | 在字段右侧填充 | 
| QTextStream::AlignRight | 在字段左侧填充 | 
| QTextStream::AlignCenter | 垫在场地的两侧 | 
| QTextStream::AlignAccountingStyle | 与右对齐相同,只是数字的符号是左齐平的 | 
QTextStream::NumberFlags(数字标志)
| QTextStream::ShowBase | 如果基数为 16 (“0x”)、8 (“0”) 或 2 (“0b”),则将基数显示为前缀 | 
| QTextStream::ForcePoint | 始终将小数点分隔符放在数字中,即使没有小数 | 
| QTextStream::ForceSign | 始终将符号放入数字中,即使是正数 | 
| QTextStream::UppercaseBase | 使用基本前缀的大写版本(“0X”、“0B”) | 
| QTextStream::UppercaseDigits | 使用大写字母表示数字 10 到 35,而不是小写 | 
QTextStream::RealNumberNotation(数字表示方法)
| QTextStream::ScientificNotation | 科学记数法, printf()%e | 
| QTextStream::FixedNotation | 定点表示法, printf()%f | 
| QTextStream::SmartNotation | 科学或定点符号, printf()%g | 
QTextStream::Status(状态)
| QTextStream::Ok | 文本流运行正常 | 
| QTextStream::ReadPastEnd | 文本流已读取基础设备中的数据末尾 | 
| QTextStream::ReadCorruptData | 文本流已读取损坏的数据 | 
| QTextStream::WriteFailed | 文本流无法写入基础设备 | 
和标准C++库一样,QTextStream 也定义了几个全局操纵器函数:<iostream>
| Qt::bin | 二进制 | 
| Qt::oct | 八进制 | 
| Qt::dec | 十进制 | 
| Qt::hex | 十六进制 | 
| Qt::showbase | 如果基数为 16 (“0x”)、8 (“0”) 或 2 (“0b”),则将基数显示为前缀 | 
| Qt::forcesign | 始终将符号放入数字中,即使是正数 | 
| Qt::forcepoint | 始终将小数点分隔符放在数字中,即使没有小数 | 
| Qt::noshowbase | 不显示前缀 | 
| Qt::noforcesign | 不显示符号 | 
| Qt::noforcepoint | 不显示小数点 | 
| Qt::uppercasebase | 大写前缀 | 
| Qt::uppercasedigits | 大写表示 | 
| Qt::lowercasebase | 小写前缀 | 
| Qt::lowercasedigits | 小写表示 | 
| Qt::fixed | 定点表示法 | 
| Qt::scientific | 科学计数法 | 
| Qt::left | 左对齐 | 
| Qt::rignt | 右对齐 | 
| Qt::center | 居中 | 
| Qt::endl | 换行 | 
| Qt::flush | 刷新 | 
| Qt::reset | 重置 | 
| Qt::ws | 跳过空格 | 
| Qt::bom | 相当于setGenerateByteOrderMark(true) | 
以下为功能的使用:
1.写入数据
写入字符串
    QString str;
    QTextStream stream(&str);
    stream<<"123456";//写入字符串
    qDebug()<<str;写入文件,初始状态:
 
    QFile file("D:/Qt_text/456.txt");
    if(file.open(QIODevice::WriteOnly|QIODevice::Append))//追加
    {
        QTextStream stream(&file);
        stream<<"123456";//写入文件
    }
    file.close();//关闭文件 
2.读取数据
读取字符串数据
    QString str("123/n456/n789");
    QTextStream stream(&str);
    qDebug()<<stream.read(1);//读取一个字符
    stream.seek(0);//把位置挪到初始位置
    qDebug()<<stream.readLine();//读取一行字符
    stream.seek(0);//把位置挪到初始位置
    qDebug()<<stream.readAll();//读取全部字符
    stream.seek(0);//把位置挪到初始位置
    QString string;
    stream.readLineInto(&string);//读取一行字符到string
    qDebug()<<string;
    //使用流读取
    QString s;
    stream>>s;//把数据读取到s中
    qDebug()<<s;
    读取文件数据
    QFile file("D:/Qt_text/456.txt");
    QTextStream stream(&file);
    if(file.open(QIODevice::ReadOnly|QIODevice::Text))//读取数据
    {
        qDebug()<<stream.read(1);//读取一个字符
        stream.seek(0);
        qDebug()<<stream.readLine();//读取一行字符
        stream.seek(0);
        qDebug()<<stream.readAll();//读取全部字符
        stream.seek(0);       
        //使用流读取数据,读取一行
        QString string;
        stream>>string
        qDebug()string
    }
    file.close();//关闭文件3.设置显示的格式
设置对齐方式、宽度和填充字符
    //1.使用函数设置
    stream.setFieldAlignment(QTextStream::AlignRight);//设置右对齐
    stream.setFieldWidth(10);//设置字符宽度
    stream.setPadChar('*');//使用*填充  默认使用空格填充
    stream<<123<<456;//在流中添加数据
    qDebug()<<stream.readAll();
    //2.可以在流中设置
    stream<<qSetFieldWidth(10)<<left<<123<<456;//在流中添加数据
    qDebug()<<stream.readAll(); 
 
 
设置精度
    stream.setRealNumberPrecision(10);
    float a=12.12;
    stream<<a;
    qDebug()<<stream.readAll();
设置数字表示方法
    QString str;
    QTextStream stream(&str);
    float a=123.456;
    stream.setRealNumberNotation(QTextStream::ScientificNotation);//科学计数法%e
    stream<<a;//添加数据
    qDebug()<<stream.readAll();
    stream.setRealNumberNotation(QTextStream::FixedNotation);//定点表示法%f
    stream<<a;//添加数据
    qDebug()<<stream.readAll();
    stream.setRealNumberNotation(QTextStream::SmartNotation);//科学或定点表示法%g
    stream<<a;//添加数据
    qDebug()<<stream.readAll();
设置进制数
注意:如果不设置的话,QTextStream会自动检测基数,比如0x开头的会自动检测为十六进制数,1-9开头的自动检测为十进制数。可以通过主动设置来关闭自动检测
    QString str;
    QTextStream stream(&str);
    int a=80;
    //使用函数设置
    stream.setIntegerBase(2);//二进制
    stream<<a;
    qDebug()<<stream.readLine();
    stream.setIntegerBase(8);//八进制
    stream<<a;
    qDebug()<<stream.readLine();
    stream.setIntegerBase(16);//十六进制
    stream<<a;
    qDebug()<<stream.readLine();
    //使用c++的方式
    stream<<bin<<a;//二进制
    qDebug()<<stream.readLine();
    stream<<oct<<a;//八进制
    qDebug()<<stream.readLine();
    stream<<hex<<a;//十六进制
    qDebug()<<stream.readLine();
设置数字标志 (这里只列举两种)
    QString str;
    QTextStream stream(&str);
    int a=80;
    
    //显示前缀
    stream.setNumberFlags(QTextStream::QTextStream::ShowBase);
    stream<<bin<<a;//二进制
    qDebug()<<stream.readLine();
    stream<<oct<<a;//八进制
    qDebug()<<stream.readLine();
    stream<<hex<<a;//十六进制
    qDebug()<<stream.readLine();
    qDebug()<<tr("---------------------------");
    
    //显示前缀的大写版本
    stream.setNumberFlags(QTextStream::QTextStream::UppercaseBase|QTextStream::QTextStream::ShowBase);
    stream<<bin<<a;//二进制
    qDebug()<<stream.readLine();
    stream<<oct<<a;//八进制
    qDebug()<<stream.readLine();
    stream<<hex<<a;//十六进制
    qDebug()<<stream.readLine();
    QString str;
    QTextStream stream(&str);
    //显示小数点
    float f=10;
    float f1=10.222222;
    stream.setNumberFlags(QTextStream::ForcePoint);//无论怎样都会显示小数点
    stream<<f;
    qDebug()<<stream.readAll();
    stream<<f;
    qDebug()<<stream.readAll();




![[Python图像处理] 使用OpenCV检测对象颜色](https://img-blog.csdnimg.cn/333c62c390324394870170b6f8ec95a9.png#pic_center)


![[附源码]计算机毕业设计基于Springboot颐养天年辅助平台](https://img-blog.csdnimg.cn/cd172bd9a4d54756b2fd37b59ca48b3f.png)











