如何使用C++的setw和setfill实现重复字符输出?填充失效如何解决
C++ setw/setfill 填充格式问题修复
错误原因
setw仅对紧随其后的第一个输出操作生效,原第一版代码中setw(10)设置后没有紧跟输出内容,该配置直接失效,导致中间空格没有正常输出setfill是流全局持久配置,设置后会一直生效直到被修改,原代码的填充配置没有和对应输出操作绑定,因此只有首次填充生效
修复方案
无需重复写多次input变量,可借助长度为0的空字符串配合setw+setfill实现批量输出填充字符:空字符串长度为0,搭配setw(n)和setfill(c)会直接输出n个连续的c字符,无需重复输出目标变量。
修复后代码如下:
#include<iostream> #include<iomanip> using namespace std; int main() { char input = 0; cout << "Enter the desired character for pattern : "<<endl; cin >> input; // 输出前3个输入字符 cout << setfill(input) << setw(3) << input // 输出中间6个空格 << setfill(' ') << setw(6) << "" // 输出后3个输入字符 << setfill(input) << setw(3) << "" << endl; return 0; }
效果验证
输入为*时,输出结果为*** ***,完全匹配要求的aaa______aaa(下划线代表空格)的输出格式。
内容的提问来源于stack exchange,提问作者M.Sohail Shahbaz
相关产品推荐
相关产品推荐

