sprintf如何输出8位,不足用0补全数

zhangwuji156 2009-03-25 05:41:55
void __fastcall TForm1::Button1Click(TObject *Sender)
{
int i = 99;
AnsiString str;
str.sprintf("%8d", i);
Caption = StringReplace(str, " ", "0", TReplaceFlags()<<rfReplaceAll);
}
有没有更好的办法,直接在sprintf里实现?
...全文
1513 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhangwuji156 2009-03-27
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 morris88 的回复:]
void __fastcall TForm1::BitBtn1Click(TObject *Sender)
{
int Digits = 8;
int Number = 99;
AnsiString asNum;

asNum.printf("%0*d", Digits, Number);

ShowMessage(asNum);
}
[/Quote]
君乃神人也
morris88 2009-03-27
  • 打赏
  • 举报
回复
void __fastcall TForm1::BitBtn1Click(TObject *Sender)
{
int Digits = 8;
int Number = 99;
AnsiString asNum;

asNum.printf("%0*d", Digits, Number);

ShowMessage(asNum);
}
hefeng1000 2009-03-26
  • 打赏
  • 举报
回复
也可以用FormatFloat
int i = 99;
AnsiString str=FormatFloat("00000000",i);
morris88 2009-03-25
  • 打赏
  • 举报
回复
AnsiString asTmp;

asTmp.printf("%s", "%0");
asTmp.cat_printf("%d", i);
asTmp.cat_printf("%s", "d");

str.sprintf(asTmp.c_str(), i);
zhangwuji156 2009-03-25
  • 打赏
  • 举报
回复
不过小弟要做成一个函数
AnsiString IntToStr(DWORD Value, int Digits)
{}就是输入一个数,然后得到Digits位字符
如000000000000000000000000099
但是参数Digits如何用在
str.sprintf("%08d", i); 中呢?
zhangwuji156 2009-03-25
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 morris88 的回复:]
str.sprintf("%08d", i);
[/Quote]
高手高手高高手,佩服佩服佩佩服,看来小弟白学这么多年C++了
zhangwuji156 2009-03-25
  • 打赏
  • 举报
回复
又想了一种算法,哪种效率更高呢?
void __fastcall TForm1::Button2Click(TObject *Sender)
{
AnsiString str;
str = str.StringOfChar('0', 8);

Caption = str.SubString(1, str.Length()-IntToStr(99).Length())+IntToStr(99);
}
先试一下3楼的方法
morris88 2009-03-25
  • 打赏
  • 举报
回复
str.sprintf("%08d", i);
fairchild811 2009-03-25
  • 打赏
  • 举报
回复
应该有类似于cout的setw之类的功能吧
fairchild811 2009-03-25
  • 打赏
  • 举报
回复
不熟悉sprintf。帮顶

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧