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中如果要输出%, 需要转义, 但不是使用\%, 而是使用%%. }