字符串拼接大全

Posted 木木ing

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了字符串拼接大全相关的知识,希望对你有一定的参考价值。

字符串拼接大全
一、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 所指的字符串数组,直到出现字符串结束(\'\\0\')为止。关于参数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方法
关于各大字符串拼接方法效率比较

以上是关于字符串拼接大全的主要内容,如果未能解决你的问题,请参考以下文章

VSCode自定义代码片段3——url大全

VSCode自定义代码片段3——url大全

VSCode自定义代码片段——cli的终端命令大全

VSCode自定义代码片段4——cli的终端命令大全

超详细的字符串用法大全

Python超详细的字符串用法大全