zoukankan      html  css  js  c++  java
  • 格式字符串分配stl::string

    代码非常easy,不解释,直接在代码:
    #include <cstdio>
    #include <cstdarg>
    #include <iostream>
    using namespace std;
    
    //功能:将格式化字符串赋给stl::string
    //參数:和printf的參数一样
    //返回值:返回格式化后的string类
    string StringFormat(const char *format, ...)
    {
        string result;
        //将字符串的长度初始化为1024
        int tlen = 1024;
        int len = 0;
        result.resize(tlen);
    
        //为string赋值
        va_list list;    
        va_start(list, format); 
        len = vsnprintf((char*)result.c_str(), tlen, format, list);
    
        //假设结果字符串长度比初始长度长,就又一次设置字符串长度。然后再赋值
        if( len >= tlen )
        {
            tlen = len + 1;
            result.resize(tlen);
            len = vsnprintf((char*)result.c_str(), tlen, format, list);
        }
        va_end(list);
    
        //删除字符串尾部的0字符
        result.erase(len);
        return result;
    }
    
    //測试样例
    int main()
    {
        string str = StringFormat("Hello, world: %d, %lf  %s", 435, 5462.56/54, "man");
        cout << str << endl;
        return 0;
    }

    版权声明:本文博客原创文章。博客,未经同意,不得转载。

  • 相关阅读:
    深拷贝(deep clone)与浅拷贝(shallow clone)
    wait和notify
    Java实现简单RPC框架(转)
    Eclipse 搭建Struts2
    手写HashMap实践
    JVM 类加载器ClassLoader源码学习笔记
    Java 内存模型学习笔记
    Struts2 入门笔记
    struts2 拦截器
    Btrace 拦截时机
  • 原文地址:https://www.cnblogs.com/gcczhongduan/p/4746879.html
Copyright © 2011-2022 走看看