社区
C++ Builder
帖子详情
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
打赏
收藏
sprintf如何输出8位,不足用0补全数
void __fastcall TForm1::Button1Click(TObject *Sender) { int i = 99; AnsiString str; str.sprintf("%8d", i); Caption = StringReplace(str, " ", "0", TReplaceFlags()<<rfReplaceAll); } 有没有更好的办法,直接在sprintf里实现?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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。帮顶
C语言入门开发: prin
tf
、
sprin
tf
补0、补空格占位
一般在处理时间的时候,界面上显示,打印
输出
这些场景下,左边补0或者补空格占位是很常见的。 补0或者补空格之后,长度是固定的;这样显示更加美观、不会因为
数
字变短、变长造成闪烁感。 示例代码: int main() { prin
tf
("%d\n",12345); //正常打印 prin
tf
("%10d\n",12345); //右对齐.位
数
不够,左边自动补空格 prin
tf
("%-10d,%c\n", 12345,'A');//左对齐.位
数
不够,右边自动补空格 prin
tf
("%010d
PHP使用
sprin
tf
()函
数
实现自动补0
PHP使用
sprin
tf
()函
数
实现自动补0
sprin
tf
('%05s', $str);
sprin
tf
() 函
数
的功能非常灵活 %05s 表示
输出
长度为5的字符串 如果长度
不足
左边自动补0 %5s 默认以空格自动
补全
%-05s 如果希望自动
补全
在右边 则在百分号后加上减号 %'#5s 使用特殊字符自动
补全
则要在字符前加上单引号 $n = 1; $s =
sprin
tf
("%05s", $n); // 00001 $s =
sprin
tf
("%-05s", $n); // 10000 $s =
sprin
tf
和prin
tf
输出
位
数
不够前边补零的技巧
sprin
tf
和prin
tf
转换时往往需要
输出
格式保持一致,比如转换mac地址和ip地址时需要将0显示出来并对齐。 inta=4; prin
tf
("%03d",a);
输出
:004 也可以用 * 代替位
数
,在后面的参
数
列表中用变量控制
输出
位
数
; inta=4; intn=3; prin
tf
("%0*d",n,a);
输出
:004 ...
php
输出
数
字左边加零,
sprin
tf
函
数
:PHP在
输出
数
字前补0,去掉小
数
后面的0
很多时候我们需要对
数
字进行格式化,比如位
数
不足
前面加0补足。用PHP自带的
sprin
tf
函
数
可以轻松实现。如果想去掉小
数
后面的0可以使用(float)$var。[PHP]//生成4位
数
,
不足
前面补0$var=
sprin
tf
(“%04d”, 2);echo $var;//结果为0002echo date(‘Y_m_d’, time()).’_’.
sprin
tf
(‘d’, rand(0,99));?&...
PHP
sprin
tf
() 函
数
:生成3位
数
字,
不足
三位前面补0
PHP
sprin
tf
() 函
数
把百分号(%)符号替换成一个作为参
数
进行传递的变量: // PHP的
sprin
tf
函
数
演示:生成3位
数
字,
不足
三位前面补0 for ($i=1; $i <= 10; $i++) { echo
sprin
tf
("%03d",$i).'<br>'; }
C++ Builder
13,825
社区成员
102,679
社区内容
发帖
与我相关
我的任务
C++ Builder
C++ Builder相关内容讨论区
复制链接
扫一扫
分享
社区描述
C++ Builder相关内容讨论区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章