C++字符串数字前补0

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++字符串数字前补0相关的知识,希望对你有一定的参考价值。

CString str ="53 10 30 1 0 ffffff84 0 0 ffffffd0 0 45";
一条字符串用空格隔开的是一个小单元;
1、把其中一位字符前加0,如1改为01,0改为00,;
2、把其中ffffff84和ffffffd0改为84和d0;
请给出代码

参考技术A CString str ="53 10 30 1 0 ffffff84 0 0 ffffffd0 0 45";
str.Remove('f');
while (str.Find(" 1 ") != -1)

str.Replace(" 1 ", " 01 ");

while(str.Find(" 0 ") != -1)

str.Replace(" 0 ", " 00 ");

cout << (LPCTSTR)str << endl;

// 运行结果
53 10 30 01 00 84 00 00 d0 00 45
Press any key to continue追问

你好,这个方法局限性太大,如果str中其他为中出现f比如“53 2f 2 3 4 ffffff4f 0 45"这样的情况就不行了,字符串中的数字是不固定的

追答

说清楚嘛,简单啦~

CString str ="53 2f 2 3 4 ffffff4f 0 45";
CString strTmp1 = "";
CString strTmp2 = "";
str.Remove('f');
for (int i = 0; i <= 9; ++i)

strTmp1.Format(" %d ", i);
strTmp2.Format(" %.2d ", i);
while (str.Find((LPCTSTR)strTmp1) != -1)

str.Replace((LPCTSTR)strTmp1, (LPCTSTR)strTmp2);


cout << (LPCTSTR)str << endl;

// 运行结果
53 02 02 03 04 04 00 45
Press any key to continue

本回答被提问者和网友采纳
参考技术B 把这个字符串以空格分开成若干子字符串,存进链表。然后进行相应的操作,比如remove非数字、一位数则在前面加0。 然后把他们再组成一个字符串 参考技术C 同意楼上的!

通用补位函数

经常遇到要对某些数据进行补位的情况,有些是数据格式问题,有些是设计的问题,就抽空写了个拙劣的补位函数,

package TestPac;

public class DoCover {


/*******参数 bit 表示固定位数
*******参数 digit 要补位的数字
******参数TOF 表示前补位或后补位,true 前补位, false 后补位
******参数 str用来补位的字符,如0,1,a,b…
**********/
public static String doCover(Integer bit,Integer digit,boolean TOF,String str){
//将数字digit 转换成字符串string类型
//计算字符串 digit的长度length
//计算length与bit的差值diff
//根据TOF确定是要前补位还是后补位.TOF= true前补位,TOF= false后补位
//根据diff进行补位
String digit_str = digit.toString();
Integer diff = bit-digit_str.length();
StringBuffer sb = new StringBuffer(digit_str);
StringBuffer sb_str = new StringBuffer(str);

for(int i=0;i<diff;i++){
if(TOF){//前补位
StringBuffer blank_str = new StringBuffer("");
blank_str.append(sb_str);
sb = blank_str.append(sb);
}
else {// 后补位
sb = sb.append(str);
}
}
System.out.println("***=="+sb.toString());
return sb.toString();
}


public static void main(String[] args) {
// TODO Auto-generated method stub
doCover(4,3,true,"0");
doCover(4,23,true,"0");
doCover(4,756,true,"0");
doCover(4,1234,true,"0");
doCover(4,12345,true,"0");

doCover(4,3,false,"0");
doCover(4,23,false,"0");
doCover(4,756,false,"0");
doCover(4,1234,false,"0");
doCover(4,12345,false,"0");
}

}

以上是关于C++字符串数字前补0的主要内容,如果未能解决你的问题,请参考以下文章

用Python自动给数字前面补0

excel 里面如何在数字前面补 0?

C#数字前补0

练习题——大数加法

java数字自动补零

java 有千位分隔逗号的数字格式化输出 数字前补0输出