首页 > 编程语言 >C++标准库 iomanip 输入输出操纵符 Manipulator

C++标准库 iomanip 输入输出操纵符 Manipulator

时间:2024-08-15 13:17:49浏览次数:10  
标签:std 输出 Manipulator cout 例如 int number C++ iomanip

输入/输出操纵符

输入输出操纵符是 C++ 中用于控制输入输出流格式的一组特殊函数或对象。它们通常用于格式化输出,例如设置宽度、精度、对齐方式等,而不涉及数据的实际读写。

  • 功能概述:输入输出操纵符能够控制输出的外观,比如调整对齐方式、设置输出的宽度和精度、控制换行等。
  • 使用场景:让输出看起来更整洁、更易于阅读
  • 如何使用:这些操纵符通常通过operator <<operator >> 操作符与 std::coutstd::cin 等结合使用。

简单示例

  • 换行endl 用于在输出后插入一个换行符,并清空输出缓冲区。
  • 设置宽度setw(n) 用于设置输出的宽度,使得输出更加整齐。
  • 设置精度setprecision(n) 用于设置浮点数输出的小数位数。
  • 对齐方式left, right, internal 用于设置输出的对齐方式。
  • 布尔值格式boolalpha 用于将布尔值输出为 truefalse
  • 基数格式hex, oct, dec 用于设置输出的基数,如十六进制、八进制或十进制。

输入操纵符(Input Manipulators)

  1. std::setw(int n): 设置字段宽度为n个字符。例如:

    std::cout << std::setw(10) << "Hello";
    // 输出为 "     Hello"
    
  2. std::setprecision(int n): 设置浮点数精度为n位。例如:

    double pi = 3.1415926535;
    std::cout << std::setprecision(3) << pi;
    // 输出为 "3.14"
    
  3. std::fixedstd::scientific: 控制浮点数的输出格式。例如:

    double number = 123.456;
    std::cout << std::fixed << number; // 输出固定小数点格式
    std::cout << std::scientific << number; // 输出科学计数法格式
    
  4. std::boolalphastd::noboolalpha: 控制布尔值的输出格式。例如:

    bool flag = true;
    std::cout << std::boolalpha << flag; // 输出为 "true"
    
  5. std::ws: 跳过输入流中的空白字符,直到遇到非空白字符为止。例如:

    std::string name;
    std::cin >> std::ws;
    std::getline(std::cin, name);
    
  6. std::getline: 从输入流中读取一整行字符串,直到换行符为止。

    std::string line;
    std::getline(std::cin, line);
    

输出操纵符(Output Manipulators)

  1. std::noskipws: 禁用空白字符的忽略。例如:

    std::cin >> std::noskipws >> ch;
    
  2. std::showpoint: 总是显示浮点数的小数点和末尾的零。例如:

    double value = 3.0;
    std::cout << std::showpoint << value; // 输出为 "3.000"
    
  3. std::uppercase: 将十六进制数字大写显示。例如:

    int number = 255;
    std::cout << std::uppercase << std::hex << number; // 输出为 "FF"
    
  4. std::endl: 输出换行并刷新输出缓冲区。这有时用于确保输出立即显示。例如:

    std::cout << "Hello, World!" << std::endl;
    
  5. std::hex: 将整数以十六进制格式输出。例如:

    int number = 255;
    std::cout << std::hex << number; // 输出为 "ff"
    
  6. std::dec: 将整数以十进制格式输出(这是默认格式)。例如:

    int number = 255;
    std::cout << std::dec << number; // 输出为 "255"
    
  7. std::oct: 将整数以八进制格式输出。例如:

    int number = 255;
    std::cout << std::oct << number; // 输出为 "377"
    
  8. std::leftstd::right: 控制字段的对齐方式。例如:

    std::cout << std::left << std::setw(10) << "Hello";  // 左对齐
    std::cout << std::right << std::setw(10) << "World"; // 右对齐
    
  9. std::internal: 将符号放在左边而数字右对齐,通常用于负数或带符号的输出。例如:

    std::cout << std::internal << std::setw(10) << -123;
    
  10. std::setfill(char c): 使用指定的字符填充宽度不足的空白。例如:

    std::cout << std::setfill('*') << std::setw(10) << 42;
    // 输出为 "********42"
    
  11. std::showbase: 和显示整数的进制基数(如十六进制的0x,八进制的0)。例如:

    int number = 255;
    std::cout << std::showbase << std::hex << number; // 输出为 "0xff"
    
  12. std::nouppercase: 禁止十六进制数字的大写输出。例如:

    int number = 255;
    std::cout << std::nouppercase << std::hex << number; // 输出为 "ff"
    
  13. std::noshowbase: 禁止显示整数的进制基数。例如:

    int number = 255;
    std::cout << std::noshowbase << std::hex << number; // 输出为 "ff"
    

组合使用

  • 组合方式1
int number = 255;
std::cout << std::setfill('0') << std::setw(10) 
          << std::showbase << std::uppercase << std::hex << number;

输出结果为 "0X000000FF"

  • 组合方式2:

    通过 std::setiosflagsstd::resetiosflags 函数来组合和取消。例子如下:

std::cout << std::setiosflags(std::ios::fixed | std::ios::showpoint)
          << std::setprecision(2) << value;

标签:std,输出,Manipulator,cout,例如,int,number,C++,iomanip
From: https://www.cnblogs.com/DSCL-ing/p/18360689

相关文章

  • 【计算机二级C++】题目与C++知识自检
    @目录公共基础知识计算机基础数据库数据结构树链表排序队列栈C++const与static指针函数重载构造与析构多态、继承、权限数据类型输入输出流模板公共基础知识计算机基础计算机完成一条指令所花费的时间称为指令周期顺序程序不具有并发性下列叙述中正确的是CA.算法的......
  • C/C++ 动态分配:malloc()和free()所涉及的空指针和强制类型转换、与new和delete的对比
    1、动态分配的内涵所谓动态内存分配,是指在程序运行时根据需要分配和释放内存,而不是在编译时确定内存需求。动态分配包括两方面的内涵:在堆上分配内存。对于linux的虚拟内存,可以分成以下5段:文本段、数据段(分初始化和未初始化数据段)、堆和栈。不使用动态分配定义一个变量,这个变......
  • c#和c++数据交互二
    1:新建c++模板,生成类型动态库2:c++里类型点击查看代码classA{public: inta; };typedefstruct{ intup; intdown; charinfos[4]; //LPWSTRinfos;}info,*LPinfo;3:c++声明动态库方法点击查看代码#defineCVAPIextern"C"__declspec(dll......
  • C++:命名空间与输入输出
    目录前言一、命名空间1.1namespace的价值1.2namespace的定义1.3命名空间的使用二、C++输入&输出前言   C++是一种面向对象的计算机程序设计语言,‌它扩展了C语言的功能,‌并引入了面向对象编程的概念,‌如类、‌继承和多态等,C++是以C语言为基础进行了拓展与创新,C......
  • c#和C++数据交互 一CLR篇
    1:配置VC++目录:包含目录:头文件的所在路径,#include时用“”链接器:输入:附加依赖项如果是clr模板,一定要用lib文件,不然会报链接错误2:先建立一个简单的dll模板,实现加法运算点击查看代码NativeCalculate.hclass__declspec(dllexport)NativeCalculate{public: ......
  • C++ 编译过程
    源码——>预处理器.i文件——>编译器.s文件——>汇编器.o文件——>链接器——>执行程序 预处理器:读取代码里#开头的命令,并把他插入到程序文本里,生产已.i为后缀名的文件编译器:把.i 文件生成汇编文件 .s汇编器:把汇编文件生成二进制文件.a 链接器:链......
  • java语言,MySQL数据库;电影推荐网站 30760(免费领源码)计算机毕业设计项目推荐万套实战教
    摘 要随着互联网时代的到来,同时计算机网络技术高速发展,网络管理运用也变得越来越广泛。因此,建立一个B/S结构的电影推荐网站;电影推荐网站的管理工作系统化、规范化,也会提高平台形象,提高管理效率。本电影推荐网站是针对目前电影推荐网站的实际需求,从实际工作出发,对过去的电影......
  • java语言,MySQL数据库;基于Web的高校知识共享系统设计与实现 32050(免费领源码)计算机毕业
    摘 要信息化社会内需要与之针对性的信息获取途径,但是途径的扩展基本上为人们所努力的方向,由于站在的角度存在偏差,人们经常能够获得不同类型信息,这也是技术最为难以攻克的课题。针对高校知识共享系统等问题,对高校知识共享系统进行研究分析,然后开发设计出高校知识共享系统以......
  • java语言,MySQL数据库;23825基于java的员工考勤系统(免费领源码)计算机毕业设计项目推荐万
    摘 要由于数据库和数据仓库技术的快速发展,员工考勤系统建设越来越向模块化、智能化、自我服务和管理科学化的方向发展。考勤管理系统对处理对象和服务对象,自身的系统结构,处理能力,都将适应技术发展的要求发生重大的变化。员工考勤系统除了具有共享系统的全部功能以外,能通过......
  • Qt/C++地图坐标纠偏/地球坐标系/火星坐标系/百度坐标系/互相转换/离线函数
    一、前言说明为什么需要地球坐标纠偏这个功能,因为国家安全需要,不允许使用国际标准的地球坐标系,也并不是咱们这边这样,很多国家都是这样处理的,就是本国的地图经纬度坐标都是按照国家标准来的,所以就需要一个转换。国内主要有三种坐标系,国际标准用的地球坐标系WGS-84,国家标准用的火星......