printf输出特定格式

printf输出特定格式

printf函数定义:

1
2
3
4
int printf(
const char *format [,
argument]...
);

关于C++中特定格式的打印输出。

C++中打印输出

符号 描述
%d 按整型数据的实际长度输出
%ld 输出长整型数据
%md 使输出长度为m,如果数据长度小于m,则左补空格,如果大于m,则输出实际长度
%s 输出实际长度字符串
%ms 输出的串占m列,如果串长度小于m,左补空格,如果大于m,实际输出
%-ms 输出的串占m列,如果串长度小于m,右补空格
%f 浮点型
%u unsigned
%o 8进制
%x 16进制

string 打印

1
2
std::string test = "string 打印测试";
printf("%s", test);

上面这种打印是有问题的,会乱码。需要修改成下面这种方式才行。因为%s对应的是char *类型的输出,不能直接打印std::string类型,可以通过c_str()转换成const char *再打印。

1
2
std::string test = "string 打印测试";
printf("%s", test.c_str()); //正常打印

char[]赋值与打印

1
2
char test[] = "test";
printf("%s", test);

上面的赋值和打印是OK的

char* 赋值和打印

1
2
3
4
5
6
7
// 不允许这么赋值,因为"hehe"在C++中是const char*类型,是不变类型。
char* str = "hehe"; //"const char *" 类型的值不能用于初始化 "char *" 类型的实体

改成下面这种就可以
const char* str = "hehe";
或者
char* str = (char*) "hehe";

也可以通过char[]转成char*

1
2
3
4
char str1[] = "test_char";
char* str2 = NULL;
str2 = str1;
printf("%s", str2); //可以正常打印

注意:通过上面的对比可以看出%s 可以对应输出char[]char* 类型对应的变量,但是不能直接输出string类型的变量,string类型需要.c_str()后才能输出。



关注博客或微信搜索公众号多媒体与图形,获取更多内容,欢迎在公众号留言交流!
扫一扫关注公众号
作者

占航

发布于

2022-09-04

更新于

2023-10-04

许可协议

评论