C++通过cout输出左对齐/右对齐文本

news/2025/3/11 23:27:15/文章来源:https://www.cnblogs.com/smartljy/p/18766499

C++通过cout输出左对齐/右对齐文本

内容

在 C++ 中使用 std::cout 控制对齐方式和填充字符时,需借助 <iomanip> 头文件中的流操作符。以下是详细解决方案:


1. 基础操作符

操作符/函数 作用 示例
std::setw(n) 设置字段宽度为 n 字符 cout << setw(10);
std::left 左对齐(默认右对齐) cout << left;
std::right 右对齐(默认数值右对齐) cout << right;
std::setfill(c) 设置填充字符为 c cout << setfill('*');

2. 左对齐 + 自定义填充

#include <iostream>
#include <iomanip>  // 必须包含此头文件int main() {int value = 42;std::string text = "Hello";// 左对齐,宽度 10,填充字符 '-'std::cout << std::left << std::setfill('-');std::cout << std::setw(10) << value << "\n";   // 输出:42--------std::cout << std::setw(10) << text << "\n";    // 输出:Hello-----return 0;
}

3. 右对齐 + 自定义填充

#include <iostream>
#include <iomanip>int main() {double price = 99.95;std::string code = "A1";// 右对齐,宽度 8,填充字符 '.'std::cout << std::right << std::setfill('.');std::cout << std::setw(8) << price << "\n";   // 输出:..99.95std::cout << std::setw(8) << code << "\n";    // 输出:.....A1return 0;
}

4. 混合对齐与填充

#include <iostream>
#include <iomanip>int main() {// 左对齐 + 填充 '*'std::cout << std::left << std::setfill('*');std::cout << std::setw(6) << "ID" << "|";  // 输出:ID****|// 右对齐 + 填充 '0'std::cout << std::right << std::setfill('0');std::cout << std::setw(5) << 7 << "\n";    // 输出:ID****|00007return 0;
}

5. 重要注意事项

  1. 作用域

    • std::left/std::rightstd::setfill 是持久性设置,直到被修改。
    • std::setw(n) 仅对下一次输出有效。
  2. 默认行为

    • 字符串:默认左对齐
    • 数值:默认右对齐
  3. 字段宽度不足

    • 若数据长度超过 setw(n)n,完整输出数据,不截断

6. 完整示例

#include <iostream>
#include <iomanip>int main() {// 表头std::cout << std::left << std::setfill(' ');std::cout << std::setw(15) << "Product"<< std::setw(10) << "Price"<< std::setw(8) << "Stock" << "\n";// 分隔线std::cout << std::setfill('-') << std::setw(33) << "" << "\n";std::cout << std::setfill(' ');// 数据行std::cout << std::left << std::setw(15) << "Apple"<< std::right << std::setw(10) << "$1.99"<< std::setw(8) << 100 << "\n";std::cout << std::left << std::setw(15) << "Banana"<< std::right << std::setw(10) << "$0.99"<< std::setw(8) << 250 << "\n";return 0;
}

输出效果

Product         Price     Stock
---------------------------------
Apple           $1.99       100
Banana          $0.99       250

通过组合这些操作符,可以灵活控制输出的对齐方式和填充字符,满足表格、报表等格式化需求。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/897471.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

三剑客与正则系列-awk勇闯天下

1.awk概述四剑客 特点 擅长find 查找文件 查找文件,与其他命令配合.grep/egrep 过滤 过滤速度最快.sed 过滤,取行,替换,删除 替换,修改文件内容,取行.awk 过滤,取行,取列,统计计算,判断,循环 ... 取列,取行,统计计算awk是一个语言,叫做单行脚本.2.概述 2.1.格式 取出/etc/passw…

实验楼-Linux(ubuntu)

实验楼-Linux(ubuntu) 1. Linux的桌面系统2. 命令 --help显示更为简单的内容软/硬连接:ln硬连接ln 目的地 硬连接名称硬连接的作用是允许一个文件拥有多个有效路径名,这样用户就可以建立硬连接到重要文件,以防止“误删”的功能。其原因如上所述,因为对应该目录的索引节点有一…

Day10_强制类型转换

VHDL强制类型转换1、STD_LOGIC_VECTOR 转 INTEGER 先将STD_LOGIC_VECTOR根据需求使用signed()转为 SIGNED 或者 使用 unsigned() 转为 UNSIGNED (signed() 和 unsigned() 在 numeric_std 中),然后使用 conv_integer() 或者 to_integer() 转为整数。 conv_integer() 和 to_in…

安装新系统的基础环境

安装新系统的基础环境 ubuntu从阿里云镜像上下载服务器版本系统,安装的时候出现curtin command in-target,需要把apt网址改为http://mirrors.163.com/ubuntu/下载man命令:apt install man看onenote笔记在~/.zshrc中最后一行加上这两行LANG=zh_CN.UTF-8 LANGUAGE=zh_CN.UTF-8cen…

Android Studio初使用

下载是困难,下载速度慢,了解了外网的知识,头一次知道。

第五章 用户身份与文件权限

第五章 用户身份与文件权限 用户身份与能力身份分类管理员UID为0:系统的管理员用户。 系统用户UID为1~999: Linux系统为了避免因某个服务程序出现漏洞而被黑客提权至整台服务器,默认服务程序会有独立的系统用户负责运行,进而有效控制被破坏范围。 普通用户UID从1000开始:…

瑞典农业育种公司OlsAro融资开发人工智能作物育种平台

瑞典农业育种初创公司OlsAro(官网:https://olsaro.com/)致力于利用人工智能和尖端植物生物技术,开发能够抵御盐分、高温和干旱等环境压力的农作物品种。今年4月OlsAro获得250万欧元种子轮融资,其首款产品为耐盐小麦,在孟加拉国的盐碱条件下,与中度耐盐品种相比,新品种的…

常用命令三

1.0 git相关 1.1 git config // 配置全局用户名 git config --global user.name "Your Name" // 配置全局邮箱 git config --global user.email "mail@example.com" // 配置Git使用store方式来处理凭证(如用户名和密码)。 // 具体来说,它会将你的Git凭证…

3.11学习苍穹外卖学习笔记

今天前半部分完成了关于redis的基础的知识学习 成功在java代码中操作redis数据库 可以完成CRUD 完成了项目中店铺打烊营业的功能还未深入学习 后半部分学习了微信小程序开发和微信登陆的功能目前正在学习 了解到微信有完整的登录校验和流程

数据资产专题报告300+份集萃解读|附PDF下载

原文链接:https://tecdat.cn/?p=40764 在当今数字经济蓬勃发展的时代,数据资产已成为推动企业创新与经济增长的关键力量。本报告汇总解读聚焦于数据资产领域,深入剖析其在多方面的发展态势。从数据资源入表的实践情况出发,探究企业在数据资产核算方面的现状;进而分析数据…

Cropin推出首个实时生成式AI驱动的农业智能平台Sage

作为世界上最先进的粮食和农业人工智能平台,Cropin Technology宣布推出Sage,这是首个由Google Gemini提供支持的实时农业智能解决方案。Cropin Sage将世界农业典型场景转换为专有的基于网格33米、1010米或55公里的电子地图,以最新技术手段确保信息来源的时效性和准确性。这使…

先正达的育种DNA大模型AgroNT到底如何?

今年6月以来,在很多公开文章和媒体上都不断看到了先正达利用AI大语言模型加速农作物种子性状研究的有关消息。 以下是官方公开消息:与“AI”同行,智绘农业 2024年6月,先正达集团与AI公司InstaDeep合作,将先正达集团专有的性状研发能力与InstaDeep的大语言模型(LLM)——农…