zoukankan      html  css  js  c++  java
  • 字符串拼接大全

    字符串拼接大全
    一、c语言字符串拼接函数
    头文件包含#include<string.h>
    函数原型:char *strcat(char *dest, const char *src);
    参数:dest 为目标字符串指针,src 为源字符串指针。
    strcat() 会将参数 src 字符串复制到参数 dest 所指的字符串尾部;dest 最后的结束字符 NULL 会被覆盖掉,并在连接后的字符串的尾部再增加一个 NULL。
    返回值:返回dest 字符串起始地址。
    note:dest 与 src 所指的内存空间不能重叠,且 dest 要有足够的空间来容纳要复制的字符串。
    举例:
    #include <stdio.h>
    #include <string.h>
    int main ()
    {
        char str[80];
        strcpy (str,"these ");
        strcat (str,"strings ");
        strcat (str,"are ");
        strcat (str,"concatenated.");
        puts (str);
        return 0;
    }
    

      

    二、c语言格式化字符串函数
    头文件:#include <stdio.h>
    原型: int sprintf(char *str, char * format [, argument, ...]);
    参数:str为要写入的字符串;format为格式化字符串,与printf()函数相同;argument为变量。
    返回值:成功则返回参数str 字符串长度,失败则返回-1,错误原因存于errno 中。
    注意:
    除了前两个参数类型固定外,后面可以接任意多个参数。而它的精华,显然就在第二个参数格式化字符串上。 printf()和sprintf()都使用格式化字符串来指定串的格式,在格式串内部使用一些以“%”开头的格式说明符(format specifications)来占据一个位置,在后边的变参列表中提供相应的变量,最终函数就会用相应位置的变量来替代那个说明符,产生一个调用者想要的字符串。
    sprintf()最常见的应用之一莫过于把整数打印到字符串中,如:
    sprintf(s, "%d", 123); //把整数123打印成一个字符串保存在s中
    sprintf(s, "%8x", 4567); //小写16进制,宽度占8个位置,右对齐
    sprintf的作用是将一个格式化的字符串输出到一个目的字符串中,而printf是将一个格式化的字符串输出到屏幕。sprintf的第一个参数应该是目的字符串,如果不指定这个参数,执行过程中出现 "该程序产生非法操作,即将被关闭...."的提示。
    sprintf()会根据参数format 字符串来转换并格式化数据,然后将结果复制到参数str 所指的字符串数组,直到出现字符串结束('')为止。关于参数format 字符串的格式请参考printf()。
     
    三、c++ std::string类
    1.append
    2.运算符+
    举例:
    void StringAdd(string& des,string src)
    {
    	des += src;
    }
    void StringAppend(string& des,string src)
    {
    	des.append(src);
    }
    

    这两种方法实现拼接,但是拼接的只能是字符串,不能是其他类型,如果拼接其他类型则显得不灵活。

    四、c++ 11 to_string
    std标准在c++11中提供了std::to_string系列函数,借助这个函数加上string+运算符可以轻松实现字符串拼接
    五、c++字符串流
    举例:
    #include <sstream>
    
    std::ostringstream s;
    string str1 ="abc";
    int iNum = 100;
    s<<str1<<"sdfal;dk;asld,"<<iNum;
    str1 = s.str();
    

     任意类型拼接,不怕越界和溢出,安全可靠。

    六、boost库boost::lexical_cast
    举例:
    #include <boost/lexical_cast.hpp>
    std::string query("select logged from login where id = " + boost::lexical_cast<std::string>(ClientID));
    

     

    七、boost format方法
    关于各大字符串拼接方法效率比较
  • 相关阅读:
    外部主机连接mysql服务器延时严重问题
    linux服务器wget无法成功解析域名及程序获取外网数据不稳定问题
    ecstore后台规格超过一定数量保存丢失
    Stata 指标体系权重的计算
    Stata 无序多分类Logistic回归
    asp.net core 管道模型及中间件MiddleWare原理
    Stata—循环语句
    Stata—更名、排序及表达式
    Stata—文件格式转换
    Stata—基本统计量输出、模型估计和结果输出
  • 原文地址:https://www.cnblogs.com/alinh/p/9023422.html
Copyright © 2011-2022 走看看