21xrx.com
2025-03-28 13:56:48 Friday
文章检索 我的文章 写文章
如何在C++中对齐输出
2023-07-02 13:09:51 深夜i     13     0
C++ 对齐 输出 setw left right

对于C++初学者来说,往往会遇到输出对齐的问题。针对这个问题,本文将提供一些简单易懂的方法来实现输出对齐。

方法一:setw函数

在C++中,可以通过设置字段宽度(field width)来实现对齐输出。为此,C++提供了一个setw函数(即set width),可以用来设置流中下一个输出字段的宽度。下面是一个使用setw函数实现对齐输出的例子:

#include <iostream>
#include <iomanip> // 包含setw函数的头文件
using namespace std;
int main() {
  int num1 = 20, num2 = 30, num3 = 400;
  cout << setw(10) << num1 << setw(10) << num2 << setw(10) << num3 << endl;
  return 0;
}

在此例子中,setw(10)用来设置输出字段宽度为10个字符。例如,第一个输出num1,输出字段宽度为10,如果num1的位数不足10位,则自动在左边用空格填充,输出结果如下:

20    30    400

方法二:fill函数

C++中,fill函数可以在字符串输出时填充指定字符。默认情况下,fill函数填充空格符。如果我们想用其他字符填充,可以通过调用setfill函数进行设置。

下面是一个使用fill函数实现对齐输出的例子:

#include <iostream>
#include <iomanip> // 包含setw和setfill函数的头文件
using namespace std;
int main() {
  int num1 = 20, num2 = 30, num3 = 400;
  cout << setfill('*') << setw(10) << num1 << setw(10) << num2 << setw(10) << num3 << endl;
  return 0;
}

在此例子中,setfill('*')将输出字段用'*'填充,输出结果如下:

********20********30*******400

方法三:sstream函数

C++中,stringstream函数可以将符合要求的输出结果转化成字符串输出,然后再通过字符串的处理方法实现对齐输出。

下面是一个使用stringstream函数实现对齐输出的例子:

#include <iostream>
#include <sstream> // 包含stringstream函数的头文件
using namespace std;
string fill_blank(int num, int len) {
  stringstream ss;
  ss << num;
  string s = ss.str();
  return string(len - s.length(), ' ') + s;
}
int main() {
  int num1 = 20, num2 = 30, num3 = 400;
  cout << fill_blank(num1, 10) << fill_blank(num2, 10) << fill_blank(num3, 10) << endl;
  return 0;
}

在此例子中,fill_blank函数用于将输出转成字符串,并根据所需的宽度来填充输出。输出结果如下:

20    30    400

总结

本文介绍了C++中实现对齐输出的三种方法:setw函数、fill函数以及sstream函数。初学者可以根据自己的需要选择合适的方法来实现输出对齐。

  
  

评论区

请求出错了