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

}
posted @ 2022-06-02 14:23  编程驴子  阅读(1789)  评论(0编辑  收藏  举报