format函数的用法MFC,format函数的用法python

http://www.itjxue.com  2023-01-08 08:29  来源:未知  点击次数: 

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函数,这个和你的问题应该无关。

(责任编辑:IT教学网)

更多

推荐广告特效文章