当前位置: 首页 > article >正文

彩色控制台,自动换行...学习个新概念:流操控器![more cpp--11]

孩子们,我回来了。先看看今天我又学了什么CPP的没啥用新特性。彩色的控制台!
还有很多的新花样!
在这里插入图片描述
事情要从去年八月讲起,我那个时候在研究流函数,写了一些比较愚笨的代码。
为什么要研究这个呢?虽然我们的CPP比C的打印函数好的一点就是,不用写转义字符。但是有的时候,为了打印的整洁一点,还得控制字符,那可是两个运算,还有一个引号,还有控制内容啊!!!众所周知,程序员是最懒的,所以我一直在探寻解决方法。今年总算是得到一个不错的解答了。特此整理为文章,分享于大家

流的第一篇文章,友元的实现

流的第二篇文章,类的实现

不想看也没啥问题,大致的思路总计如下

自定义流运算符号

#include <iostream>
#include <fstream>
using namespace std;

// 定义 Blank 类
class Blank {
public:
    // 重载 << 运算符
    friend ostream& operator<<(ostream& os, const Blank& b) {
        os << "\t";
        return os;
    }
}blank;

int main() {
    string name = "Alice";
    string ega = "Engineer";

    cout << name << blank << ega << endl; // 输出: Alice    Engineer

    return 0;
}

但是这样不够优雅,因为我们定义了一个类,还有类的对象,有些太麻烦了。我们完全可以使用函数来完成这个

// 定义 blank 函数
ostream& blank(ostream& os) {
    os << "\t";
    return os;
}

int main() {
    string name = "Alice";
    string ega = "Engineer";

    cout << name << blank << ega << endl; // 输出: Alice    Engineer

    return 0;
}

流操纵器

我们第二个其实是写了一个流操纵器(这是一个新概念)。流操纵器是一些特殊的函数,它们可以直接插入到流中来修改流的状态或输出特定的格式。

#include <iostream>
#include <iomanip> // 包含流操纵器的头文件
using namespace std;

int main() {
    int num = 255;
    double pi = 3.141592653589793;

    // 使用 hex、dec、oct 流操纵器
    cout << "Decimal: " << dec << num << endl;
    cout << "Hexadecimal: " << hex << num << endl;
    cout << "Octal: " << oct << num << endl;

    // 使用 setw 和 setprecision 流操纵器
    cout << "Pi (default precision): " << pi << endl;
    cout << "Pi (setprecision(5)): " << setprecision(5) << pi << endl;
    cout << "Pi (setw(10)): " << setw(10) << pi << endl;

    return 0;
}
ecimal: 255
Hexadecimal: ff
Octal: 377
Pi (default precision): 3.14159
Pi (setprecision(5)): 3.1416
Pi (setw(10)):     3.1416

打印彩色字体

#include <iostream>
#include <iomanip> // 包含流操纵器的头文件
using namespace std;

// 定义颜色流操纵器
ostream& red(ostream& os) {
    os << "\033[31m"; // 设置红色
    return os;
}

ostream& green(ostream& os) {
    os << "\033[32m"; // 设置绿色
    return os;
}

ostream& reset(ostream& os) {
    os << "\033[0m"; // 重置颜色
    return os;
}

int main() {
    // 使用颜色流操纵器
    cout << red << "This text is red." << reset << endl;
    cout << green << "This text is green." << reset << endl;

    return 0;
}

效果就是如开头那样
流操控器可以实现不错的代码封装效果。大家可以好好探索一下

在这里插入图片描述


http://www.kler.cn/a/527293.html

相关文章:

  • Java内存模型 volatile 线程安全
  • 数据库性能优化(sql优化)_SQL执行计划03_yxy
  • 新版231普通阿里滑块 自动化和逆向实现 分析
  • rust学习-rust中的保留字
  • 前端-Rollup
  • 春晚舞台上的人形机器人:科技与文化的奇妙融合
  • Python酷库之旅-第三方库Pandas(103)
  • Redis 基础命令
  • SCRM开发为企业提供全面客户管理解决方案与创新实践分享
  • 二级C语言:二维数组每行最大值与首元素交换、删除结构体的重复项、取出单词首字母
  • 【C语言】内存管理
  • 洛谷P2651 添加括号III
  • 我的创作纪念日——成为创作者的 第365天(1年)
  • Spring RESTful API 设计与实现
  • 使用openAI与Deepseek的感受
  • 安心即美的生活方式
  • 2025-1-26-sklearn学习(46) 无监督学习: 寻求数据表示 空伫立,尽日阑干倚遍,昼长人静。
  • Native Memory Tracking 与 RSS的差异问题
  • 验证二叉搜索数(98)
  • 【算法】动态规划专题① ——线性DP python
  • 理解动手学深度学习的自编包d2l
  • 青少年编程与数学 02-008 Pyhon语言编程基础 05课题、数据类型
  • 【Elasticsearch】match_bool_prefix 查询 vs match_phrase_prefix 查询
  • DeepSeek的使用技巧介绍
  • SARIMA介绍
  • 【TCP协议】流量控制 滑动窗口