21xrx.com
2024-11-08 20:24:51 Friday
登录
文章检索 我的文章 写文章
C++中实现数字前面补0的方法
2023-07-05 02:56:01 深夜i     --     --
C++ 数字 前面 补0 方法

在C++中实现数字前面补0的方法是很常见的需求。在处理日期、时间、货币等需要表达“零宽度”的数字时,这个问题会经常出现。以下是几种解决方法:

1. 使用iomanip库中的setfill和setw函数

setfill函数用于设置填充字符,setw函数用于设置数字的宽度。这两个函数配合使用可以实现数字前面补0的效果。例如,下面这段代码可以将一个整数输出为4位数,不足4位时在前面补0:


#include <iostream>

#include <iomanip>

using namespace std;

int main()

{

  int num = 123;

  cout << setfill('0') << setw(4) << num << endl;

  return 0;

}

输出结果为“0123”。

2. 使用字符串流stringstream

可以使用stringstream将数字转成字符串,然后在字符串前面加上所需的0,最后再转回数字。例如,下面这段代码可以将整数num转成4位数的字符串,不足4位时在前面补0:


#include <iostream>

#include <sstream>

using namespace std;

int main()

{

  int num = 123;

  stringstream ss;

  ss << setfill('0') << setw(4) << num;

  string str = ss.str();

  int new_num = stoi(str);

  cout << new_num << endl;

  return 0;

}

输出结果为“0123”。

3. 使用自定义函数

可以定义一个函数,接收一个整数和数字的位数为参数,将这个整数转成字符串,然后在字符串前面加上所需的0,最后再转回数字。例如,下面这段代码可以定义一个函数add_zero,将整数num转成4位数的字符串,不足4位时在前面补0:


#include <iostream>

#include <string>

using namespace std;

int add_zero(int num, int digit)

{

  string str = to_string(num);

  int len = str.length();

  if(len >= digit)

    return num;

  else

  {

    string prefix(digit-len, '0');

    string new_str = prefix + str;

    return stoi(new_str);

  }

}

int main()

{

  int num = 123;

  int new_num = add_zero(num, 4);

  cout << new_num << endl;

  return 0;

}

输出结果为“0123”。

以上三种方法都可以实现数字前面补0的效果,各有优缺点,可以根据实际需要进行选择。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复