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
| char* str = "hehe";
改成下面这种就可以 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()
后才能输出。