format函数的用法MFC,format函数的用法python
format用法 mfc
以CString的Format举例,第一个参数是格式化字符串,就像printf的第一个参数一样,用%d表示int,%s表示char*,%u表示unsigned int,%hd表示short,%hu表示unsigned short,%hhd表示char,%hhu表示unsigned char,%f表示float等。后面的参数就是与格式化字符串中每个字段对应的类型变量。
举例:
int a = 10;
int b = 100;
CString str;
str.Format("%d*%d=%d\n", a, b, a * b);
那么输出就是10 * 100 = 1000
format函数使用方法
本人只是初学阶段,在学习过程中的一些笔记。想借此平台也分享给刚刚学习的朋友,如有错的地方欢迎各位大神与高手指点。
通过{} 和 :??替换 %
通过format函数可以接受不限参数个数、不限顺序
format括号内用=给变量赋值
例子一:
a =?1
b =?2
c =?3
print('{x}+{y}+{z}={w}'.format(x=a,?y=b,?z=c,?w=a + b + c))
例子二:
def?debug(func):
?def?wrapper():
?print("[DEBUG]: enter {}".format(func.__name__))
?return?func()
?return?wrapper
@debug
def?say_hello():
?print("hello!")
say_hello()
通过对象属性
class?Person:
?def?__init__(self,?name,?age):
?self.name,?self.age = name,?age
?def?__func__(self):
?return?"This guy is { self.name }, is {self.age} old".format(self=self)
s = Person('single',?4)
a1 = s.__func__()
print(a1)
填充和对齐
^分别表示居中、左对齐、右对齐,后面带宽度
print('{:10}'.format('single'))?# 右对齐
'????single'
print('{:10}'.format('single'))?# 左对齐
'single????'
print('{:^10}'.format('single'))?# 居中
'??single??'
精度和类型f
精度常和f一起使用
print('{:.2f}'.format(3.1415))?# 精密到2位
‘3.14'
print('{:.4f}'.format(3.1))?# 精密到4位
‘3.1000'
进制转化
其中b o d x分别表示二、八、十、十六进制
print('{:b}'.format(10))?# 二进制
‘1010'
print('{:o}'.format(10))?# 八进制
‘12'
print('{:d}'.format(10))?# 十进制
‘10'
print('{:x}'.format(10))?# 十六进制
‘a'
千位分隔符
只针对数字
print('{:,}'.format(1000000))?# 整数
'1,000,000'
print('{:,}'.format(1000000.22555))?# 含小数
'1,000,000.22555'
print('{:,.2f}'.format(1000000.22555))?# 含小数,结合精准使用
'1,000,000.23'
MFC中的几个重要函数:区别和含义
仅供参考:
1、DrawText()
该函数在指定的矩形里写入格式化的正文,根据指定的方法对正文格式化(扩展的制表符,字符对齐、折行等)。
int DrawText(HDC hDC, // 设备描述表句柄
LPCTSTR lpString, // 将要绘制的字符串
int nCount, // 字符串的长度
LPRECT lpRect, // 指向矩形结构RECT的指针
UINT uFormat // 正文的绘制选项
);
2.取高字节,低字节
利用宏定义
16 bit的
BYTE HIBYTE( WORD wValue );
BYTE LOBYTE( WORD wValue );
32bit的
WORD HIWORD( DWORD dwValue );
WORD LOWORD( DWORD dwValue );
3.如果字符串太长了,一行写不尽怎么办?
可以这样写:
CString statue;
statue.Format(_T("头部标识:%d\n"\
"最后页字节数: %d\n"),
pDoc-pHeader-e_magic, /*头部标识*/
pDoc-pHeader-e_cblp);/*文件最后页的字节数*/
当然,也有人 喜欢这样写:
CString str = "I love you,\
you love me!Too!"
当然这样写也可以,只不过str在I love you,之后会加上许多空格!
4.CString::Format函数使用要注意的问题!
比如说,当我们要格式化输入一个字符串的时候,我们可以这样做:
Format(“%s”, pStr);
pStr是指向一个字符串的指针!这个时候要注意了,如果pStr指向了一个不用’\0’结尾的字符串,那怎么办?
如果这样的话,程序会出错!你要尽量避免这种情况!
CString类的Format函数使用起来特别方便!使用方法如下:
函数声明
function Format(const Format: string; const Args: array of const): string; overload;
(事实上Format方法有两个种形式,另外一种是三个参数的,主要区别在于它是线程安全的,但并不多用,所以这里只对第一个介绍)
MFC中怎样通过Format给数据分配16位的空间
MFC中,CString的Format函数没有“给数据分配空间”的功能,这个是格式化字符串使用的,和Scanf函数的用法基本相同。
还有时间类有Format函数,这个和你的问题应该无关。