QTextStream之操纵算子的使用

简介: QTextStream之操纵算子的使用

1 操纵算子

在上一篇文章,小豆君介绍了QTextStream的格式化输出:

int i = 60;
out.setIntegerBase(16);//设置16进制显示,所以使用输入输出流,也可以很容易的进行进制转换
out << i << endl; //output:3c


但是,如果我想输出一个数字表格,每列分别以十进制,二进制,八进制,十六进制进行显示,那么,用上一篇的方法,可以这样写

int main()
{
    QTextStream out(stdout);
    out.setNumberFlags(QTextStream::ShowBase);
    out.setFieldWidth(10);
    out << "dec"
        << "bin"
        << "oct"
        << "hex" << endl;
    QList<int> intList;
    intList << 12 << 16 << 18;
    for (int i = 0; i < intList.size(); ++i)
    {
        int num = intList.at(i);
        out.setIntegerBase(10);
        out << num;
        out.setIntegerBase(2);
        out << num;
        out.setIntegerBase(8);
        out << num;
        out.setIntegerBase(16);
        out << num << endl;
    }
}


输出是:


在for循环中,每次输出一种进制,就需要重新设置输出标志,这显得很不灵活。为了解决这样的问题,可以使用操纵算子,Qt中的操纵算子和标准库中的用法基本相同。

下面是使用操纵算子简化的程序,把for循环替换一下:

for (int i = 0; i < intList.size(); ++i)
{
    //使用操纵算子进行输出
    int num = intList.at(i);
    out << dec << num
        << bin << num
        << oct << num
        << hex << num << endl;
}


上面的bin dec oct hex都被称作操纵算子,这大大简化了代码。

关于QTextStream的操纵算子,大家可以打开Qt的帮助文档:


这些操纵算子都很简单,小豆君就不一一介绍了。

以上的操纵算子都是Qt提供给我们的,但是有时候我们需要一些自定义的操纵算子,下面,我们来看看如何创建自己的操纵算子。

2 创建操纵算子

如何创建操纵算子,最好的参考就是看看Qt代码中如何做的,下面是bin的声明:

QTextStream &bin(QTextStream &s);


它是以QTextStream对象的引用为参数,返回值为QTextStream对象的引用的函数。 例如,我想在输出流中加入一个tab符,那么,可以这样做:

QTextStream &tab(QTextStream &s)
{
    return s << '\t';
}
int main()
{
    QTextStream out(stdout);
    QList<int> intList;
    intList << 12 << 16 << 18;
    for (int i = 0; i < intList.size(); ++i)
    {
        int num = intList.at(i);
        out << tab << num;
    }
}


输出为:


好了,关于操纵算子的内容就讲到这里吧,我们下次再见。


最后也希望大家多多支持小豆君的创作,关注小豆君的公众号“小豆君Qt分享”,最新文章都会在公众号第一时间发布,或者你有不懂的问题,关注公众号后,可加好友或进Qt群获得答案。

相关文章
|
2月前
|
机器学习/深度学习 存储 缓存
ATB概念之:算子tiling
算子 tiling 是一种优化技术,用于提高大规模张量运算的计算效率。它通过将大任务分解为小块,优化内存使用、支持并行计算,并防止内存溢出。在ATB中,tiling data指kernel的分片参数,用于指导计算。ATB提供了三种 tiling data 搬移策略:整体搬移、多stream搬移及随kernel下发搬移,旨在优化内存拷贝任务,提高计算效率。
|
机器学习/深度学习 自动驾驶 机器人
3D点云算子并无实质进步?微软亚研重新评估,提出极简算子PosPool
前不久一篇探讨过去十年深度度量学习研究进展的研究引发热议,不公平的实验设置等因素会使人们对领域进展产生误解。那么 3D 点云算子领域的进展是真实的吗?中科大和微软亚研的研究人员进行了系统性评估,并提出了无需可学参数的新型 3D 点云算子 PosPool。
295 0
3D点云算子并无实质进步?微软亚研重新评估,提出极简算子PosPool
|
机器学习/深度学习 人工智能 自然语言处理
AICompiler编译器介绍及访存密集算子优化
欢迎走进阿里云机器学习PAI AICompiler编译器系列。随着AI模型结构的快速演化,底层计算硬件的层出不穷,用户使用习惯的推陈出新,单纯基于手工优化来解决AI模型的性能和效率问题越来越容易出现瓶颈。为了应对这些问题,AI编译优化技术已经成为一个获得广泛关注的技术方向。这两年来,这个领域也异常地活跃,包括老牌一些的TensorFlow XLA、TVM、Tensor Comprehension、Glow,以及最近呼声很高的MLIR,能够看到不同的公司、社区在这个领域进行着大量的探索和推进。
2211 0
AICompiler编译器介绍及访存密集算子优化
|
存储 调度 缓存
|
安全 Java 开发者
并行流ParallelStream中隐藏的陷阱
这篇文章介绍一下日常开发中并行流ParallelStream中隐藏的陷阱,这个问题其实离我们很近,特别是喜欢使用JDK1.8+的流式编程的伙伴,应该会深有感触。标题中所谓的"陷阱",其实并不是ParallelStream自身的陷阱,而一般是开发者错误使用ParallelStream给自己埋下的陷阱。
650 0
并行流ParallelStream中隐藏的陷阱
|
机器学习/深度学习 算法 计算机视觉
Halcon中一些突然想不起来但确实有用的算子(2)
Halcon中一些突然想不起来但确实有用的算子(2)
616 0
|
JavaScript 算法 前端开发
《编程原本 》一2.1 变换
本节书摘来自华章出版社《编程原本 》一书中的第2章,第2.1节,作者(美)斯特潘诺夫(Stepanov, A.),(美)麦克琼斯(McJones, P.),更多章节内容可以访问云栖社区“华章计算机”公众号查看
1095 0
|
BI
《BI那点儿事》数据流转换——逆透视转换
原文:《BI那点儿事》数据流转换——逆透视转换   逆透视转换将来自单个记录中多个列的值扩展为单个列中具有同样值的多个记录,使得非规范的数据集成为较规范的版本。例如,每个客户在列出客户名的数据集中各占一行,在该行的各列中显示购买的产品和数量。
916 0

热门文章

最新文章