c++ 格式化字符串
格式化字符串
c++格式化字符串做的挺烂, 还是用c的snprintf吧.
snprintf可以认为是sprintf的升级版, 多了一个控制字符串长度的参数.
语法
//snprintf语法:
// int snprintf(char *str, int n, char *format[, argument, ...])
// 参数一: char类型字符串, 格式化后的字符串会赋值给这个变量
// 参数二: 字符串最大长度, 超过会被截断
// 参数三: 待格式化的字符串
// 剩余参数: 待格式化的变量/常量
// 返回值: 格式化成功返回char *str的长度, 失败返回-1.
代码
#include <iostream>
#include <string>
int main()
{
using namespace std;
string s0 = "abcd"; //string 类型字符串
int i = 5 ; //整数
float f = 0.123456; //浮点数
int size = 100;
char buffer[size]; //char 类型字符串
snprintf(buffer, size, "|%-6s|%3d|%5.2f%%|", s0.c_str(), i, f);
cout << buffer << endl; //输出: |abcd | 5| 0.12%|
//注意一: 待格式化的变量如果是string类型的话, 不能直接用, 需要用string.c_str()转回为c格式字符串.
//注意二: format中如果要输出%, 需要转义, 但不是使用\%, 而是使用%%.
}