C++ printf的%-s格式化咨询:代码中%-25s与%-90s的作用
C++ 中
printf 字符串占位符 %-25s、%-90s 作用说明 基础规则铺垫
printf 的字符串格式化说明符中,%-Ns 是通用的左对齐固定宽度字符串占位符,各部分含义如下:
%:格式说明符的起始标记-:对齐控制标记,代表左对齐;如果省略该标记,默认是右对齐填充。比如不带负号的%25s处理"hello"时,会在字符串左侧补20个空格凑满25宽度,和%-25s在右侧补空格的效果相反N:设定的最小输出宽度,单位为字符数s:代表该占位符对应输出的参数为字符串类型
补充特性:如果实际传入的字符串长度大于设定的最小宽度N,占位符不会截断字符串,会完整输出全部内容。
两个占位符的具体效果
对应示例代码中的两个占位符,分别的作用是:
%-25s:对传入的字符串做左对齐输出,最少占用25个字符的显示宽度;如果字符串实际长度不足25位,会在字符串右侧补空格凑满25位宽度。
比如示例中传入的字符串是长度为5的"hello",经过该占位符处理后的输出内容为:hello后接20个空格,总长度刚好25字符。%-90s:对传入的字符串做左对齐输出,最少占用90个字符的显示宽度;如果字符串实际长度不足90位,会在字符串右侧补空格凑满90位宽度。
比如示例中传入的字符串是长度为5的"world",经过该占位符处理后的输出内容为:world后接85个空格,总长度刚好90字符。
示例代码的实际输出效果
示例代码如下:
#include <iostream> #include <stdio.h> using namespace std; int main() { printf ("%-25s %-90s","hello" ,"world"); }
运行后实际的输出排布逻辑为:
- 首先用
%-25s输出"hello",占满25列(hello+20个尾随空格) - 输出格式串中两个占位符之间的单独空格
- 最后用
%-90s输出"world",占满90列(world+85个尾随空格)
这类写法通常用于控制台输出的排版对齐,让不同长度的字符串输出后能保持列对齐,避免排版散乱。
内容的提问来源于stack exchange,提问作者proglove
相关产品推荐
相关产品推荐

