精华内容
下载资源
问答
  • C++ 字符串拼接函数:strcat_s1、函数原型2、函数功能3、参数介绍3、示例 1、函数原型 errno_t strcat_s( char *strDestination, size_t numberOfElements, const char *strSource ); 2、函数功能 字符串拼接,...

    1、函数原型

    errno_t strcat_s(
       char *strDestination,
       size_t numberOfElements,
       const char *strSource 
    );
    

    2、函数功能

    字符串拼接,追加 strSource 到 strDestination

    3、参数介绍

    strDestination:目标字符串缓冲区。
    numberOfElements:目标字符串缓冲区的大小。
    strSource:源字符串缓冲区。

    注意:第二个参数是合并字符串后的字符数量。 即,源串大小 + 目标串大小 + 字符串结束符大小("\0")。

    3、示例

    #include <stdlib.h>
    #include <string.h>  
     
    int main(int argc, char *argv[])  
    {  
    	char *result_str = (char *)malloc(12);  
    	memset(result_str , 0, sizeof(result_str ));  
    	char *str1 = "hello";  
    	char *str2 = "world!";  
     
    	int len1 = strlen(str1) + 1;  
    	strcat_s(result_str , len1, str1);  
             
    	int len2 = strlen(result_str ) + strlen(str2) + 1;         
    	strcat_s(result_str , len2, str2);     
    	    
    	printf("%s", result_str);  
    	return 0;  
    );
    

    输出:helloworld!

    展开全文
  • C++字符串拼接函数stringcat

    千次阅读 2018-01-24 22:00:00
    //p用于存储拼接后的字符串,p0备用 p=new char[strlen(s1)+strlen(s2)+1];//使用new为p申请恰好的堆空间 if(p==NULL){//检测是否申请空间成功 cout!"; } p0=p;//让P0指向P while(*s1){//s1中的元素不为'\0'时继续...
    #include <iostream>
    using namespace std;
    char * stringcat(const char *s1,const char *s2);
    void main(){
    	char *c;
    	const char *a = "i love ",*b="you";
    	c=stringcat(a,b);
    	cout<<c<<endl;
    	delete [] c;
    }
    
    
    char * stringcat(const char *s1,const char *s2){
    char*p,*p0;//p用于存储拼接后的字符串,p0备用
    p=new char[strlen(s1)+strlen(s2)+1];//使用new为p申请恰好的堆空间
    if(p==NULL){//检测是否申请空间成功
    	cout<<"Out of space!"<<endl;
    }
    p0=p;//让P0指向P
    while(*s1){//s1中的元素不为'\0'时继续遍历
    	*p++=*s1++;//将p的元素用s1元素挨个填充
    }
    while(*s2){
    	*p++=*s2++;
    }
    *p='\0';//尾部加上结束符 
    return p0;//返回p0
    }


    疑难点1:*p++=*s1++

    *p的首地址首先被s1的首地址赋值,然后 *p++就是走向p的下一个元素的地址,*s1++同理,然后继续赋值,直到s1到结束符 

    疑难点2:return p0

    p0指向p的首地址,所以p0的内容和p是一样的,但是p最后指向了结束符,所以返回p就是返回结束符,最后会溢出!

    展开全文
  • 本文对C++字符串拼接操作的四种运行:+=、append、stringstream、sprintf 进行简单的性能测试, 测试方法 比较方法是写了4个函数,分别用+=、append、stringstream、sprintf的方式来拼接字符串,拼接方法是将 s1=...

    测试说明

    本文对C++字符串拼接操作的四种运行:+=、append、stringstream、sprintf 进行简单的性能测试,

    测试方法

    比较方法是写了4个函数,分别用+=、append、stringstream、sprintf的方式来拼接字符串,拼接方法是将 s1=“abcedfg”,s2=“hijklmn”,s3="opqrst"三个字符串拼接到一起,总共循环60次。然后在main函数中依次调用这4 个函数,并打时间戳来计时。为了使时间差异更明显,可以取循环N(N可以为100或是1000000等)次调用的时间。

    测试结果

    下表显示的为进行时间,单位为 μ\mus.

    操作\循环次数 1,000,000 100,000 10,000 1,000 100
    += 3,405,450 337,229 32,177 3,402 369
    append() 4,020,078 401,719 40,265 4,074 429
    Sstime 7,835,499 788,242 78,928 7,984 921
    sprintf 14,875,433 1,517,999 150,839 15,425 1,591

    源代码

    #include <iostream>
    #include <string>
    #include <sys/time.h>
    #include <sstream>
    #include <stdio.h>
    using namespace std;
    #define OUT_IN_REPEATE_NUM 10000
    #define IN_REPEATE_NUM 60
    
    string s1="abcedfg";
    string s2="hijklmn";
    string s3="opqrst";
    void  plusTest(string& ret)
    {
        for(int i=0; i<IN_REPEATE_NUM; i++)
        {
            ret += s1;
            ret += s2;
            ret += s3;
        }
    }
    void  appendTest(string& ret)
    {
        for(int i=0; i<IN_REPEATE_NUM; i++)
        {
            ret.append(s1);
            ret.append(s2);
            ret.append(s3);
        }
    }
    void sprintfTest(string& ret)
    {
        const size_t length=26*IN_REPEATE_NUM;
        char tmp[length];
        char* cp = tmp;
        size_t strLength=s1.length()+s2.length()+s3.length();
        for(int i=0; i<IN_REPEATE_NUM; i++)
        {
            sprintf(cp,"%s%s%s", s1.c_str(), s2.c_str(),s3.c_str());
            cp+=strLength;
        }
        ret = tmp;
    }
    
    void  ssTest(string& ret)
    {
        stringstream ss;
        for(int i=0; i<IN_REPEATE_NUM; i++)
        {
            ss<<s1;
            ss<<s2;
            ss<<s3;
        }
        ret = ss.str();
    }
    int main() {
        string ss, plus, append, sprintf;
        struct timeval sTime, eTime;
    
        gettimeofday(&sTime, NULL);
        for(int i=0; i<OUT_IN_REPEATE_NUM; i++)
        {
            sprintf="";
            sprintfTest(sprintf);
        }
        gettimeofday(&eTime, NULL);
        long SprintfTime = (eTime.tv_sec-sTime.tv_sec)*1000000+(eTime.tv_usec-sTime.tv_usec); //exeTime 单位是微秒
    
        gettimeofday(&sTime, NULL);
        for(int i=0; i<OUT_IN_REPEATE_NUM; i++)
        {
            append="";
            appendTest(append);
        }
        gettimeofday(&eTime, NULL);
        long AppendTime = (eTime.tv_sec-sTime.tv_sec)*1000000+(eTime.tv_usec-sTime.tv_usec); //exeTime 单位是微秒
    
        gettimeofday(&sTime, NULL);
        for(int i=0; i<OUT_IN_REPEATE_NUM; i++)
        {
            ss="";
            ssTest(ss);
        }
        gettimeofday(&eTime, NULL);
        long SsTime = (eTime.tv_sec-sTime.tv_sec)*1000000+(eTime.tv_usec-sTime.tv_usec); //exeTime 单位是微秒
    
        gettimeofday(&sTime, NULL);
        for(int i=0; i<OUT_IN_REPEATE_NUM; i++)
        {
            plus="";
            plusTest(plus);
        }
        gettimeofday(&eTime, NULL);
        long PlusTime = (eTime.tv_sec-sTime.tv_sec)*1000000+(eTime.tv_usec-sTime.tv_usec); //exeTime 单位是微秒
    
        cout<<"PlusTime is :   "<<PlusTime<<endl;
        cout<<"AppendTime is : "<<AppendTime<<endl;
        cout<<"SsTime is :     "<<SsTime<<endl;
        cout<<"SprintfTime is :"<<SprintfTime<<endl;
        if(ss==sprintf && append==plus && ss==plus)
        {
            cout<<"They are same"<<endl;
        }
        else
        {
            cout<<"Different!"<<endl;
            cout<<"Sprintf: "<<sprintf<<endl;
            cout<<"ss:        "<<ss<<endl;
            cout<<"Plus:     "<<plus<<endl;
            cout<<"Append:"<<append<<endl;
        }
    
    }
    

    参考资料

    https://www.cnblogs.com/xiaopanlyu/p/4499459.html

    展开全文
  • C++字符串拼接

    万次阅读 多人点赞 2019-08-15 14:18:51
    C++字符串的拼接 字符串拼接是指将两个字符串连接在一起,形成一个更长的字符串 #include <iostream> int main(int argc,const char* argv[]) { std::string str1 = "Hello ;" std::string str2 = "World!...

    C++字符串的拼接

    字符串拼接是指将两个字符串连接在一起,形成一个更长的字符串

    #include <iostream>
    
    int main(int argc,const char* argv[])
    {
    
    	std::string str1 = "Hello ";
    	std::string str2 = "World!";
    	//append(char* )将字符串str2拼接到字符串str1后面。
    	str1.append(str2);
    	std::cout << str1 << std::endl;
    
    	std::string str3 = "Hello ";
    	std::string str4 = "Hello World!";
    
    	/*
    	append(str4,6,,6))将字符串str4的第6个字符开始的连续6个字符,拼接到字符串str3的后面
    	该函数的第二个参数是从第一个参数的第一个字符开始计算,注意从0开始计算
    	地三个参数是从第二个参数开始的连续几个字符被拼接
    	*/
    	str3.append(str4,6,6);
    	std::cout << str3 << std::endl;
    
    	std::string str5 = "Hello ";
    	//将10个A拼接到字符串str5的后面
    	str5.append(10,'A');
    	std::cout << str5 << std::endl;
    
    	return 0;
    }
    
    展开全文
  • C++ 字符串操作函数

    千次阅读 2017-02-23 17:28:58
    由于字符串使用广泛,C和C++提供了一些字符串函数,包括字符串连接函数strcat,字符串复制函数strcpy,字符串比较函数strcmp,字符串长度函数strlen,在C语言中被定义在string.h中定义。在C++中被定义在cstring和...
  • C/C++ 字符串拼接 sprintf()

    千次阅读 2018-10-09 16:11:13
    C/C++ 字符串拼接 sprintf() 利用opencv 按时间命名图片并保存到E盘指定位置,用到字符串拼接知识,找了一些资源,拼凑一下,试了试,还不错,特此记录、分享。 (注)opencv图片保存算是小儿科,代码不再贴出,...
  • c++ 字符串拼接

    万次阅读 2019-06-28 19:57:47
    char* ,char* char* str1 = "Hello"; char*str2 = "World"; //方式一 char str3[20]; strcpy(str3, str1); strcat(str3, str2); //方式二 //char str3[20]; sprintf(str3,"%s%s"...
  • C++字符串拼接

    千次阅读 2017-03-16 11:30:50
    输出:ch1与ch2拼接在一起的字符串char* ch3 #include "stdafx.h" #include #include "Circle.h" using namespace std; int main() { char *ch1 = "link "; char *ch2 = "test"; char *ch3 = (char
  • C++字符串拼接和输入

    2018-11-13 10:05:00
    一 .char类型字符串以空字符结尾  1.以空字符结尾,空字符被写作\0,其ASCII码为0,用来标记字符串的结尾。  char dog[4]={'a','b','c','d'} //不是一个字符串 ...C++有很多处理字符串函数,其中包括c...
  • c++ 字符串相关函数

    千次阅读 2019-03-13 15:30:16
    c: ...2. 字符串复制 头文件:#include &lt;string.h&gt; 和 #include &lt;stdio.h&gt; 原型声明:char *strcpy(char* dest, const char *src); 函数原型:char *strncpy(ch...
  • @[TOC](c++ 字符串拼接 malloc(): memory corruption) 发现问题 想把字符串LogDir和LogName拼接到一起,使用如下代码。 char *LogFile = (char *) malloc(strlen(LogDir) + strlen(LogName)); sprintf(LogFile, "%s%...
  • 不使用函数实现字符串拼接函数strcat,已知函数原型为 char *strcat(char *dest,const char src); 不使用系统库函数,实现strcat #include&lt;iostream&gt; #include &lt;assert.h&gt; #pragma...
  • C++字符串处理函数汇总

    千次阅读 2013-06-18 17:51:58
    C++字符串转化为数字的库函数 1、atoi 功 能:把一字符串转换为整数 用 法:int atoi(const char *nptr); 详细解释:atoi是英文array to integer 的缩写。atoi()会扫描参数nptr字符串,如果第一个字符不是...
  • C/C++字符串拼接的使用场景非常多,字符串拼接的方法也非常多,这里简单的比对下上述四种方法的效率。 测试方法:分别哟经+=、append、stringstream、sprintf的方式来拼接字符串。s1=“aaaaa”,s2=“bbbbb”,s3...
  • #include "stdio.h" //函数原型 char *cat(char *a,char *b); void main(){ char a[100],b[100]; gets(a);//输入字符串a ...//输入字符串b ...//拼接a,b字符串 puts(a); } ch...
  • 2、字符串拼接; 3、字符串比较; 4、将目标串前n个字符置为其它字符; 5、颠倒字符串顺序; 6、将所有小写字符转换为大写字符; 7、将所有大写字符转换为小写字符; 8、查找
  • C++字符串常见操作函数最全总结!!

    万次阅读 多人点赞 2020-05-16 22:36:50
    在做题过程中经常用到字符串,有时候费了很大力气去写一个函数,结果最后发现C++已经封装好了此类函数。。。所以花点时间总结一下,这里参考了:http://www.cplusplus.com/reference/ 1、构造函数: string str:空串...
  • c++字符串相连函数

    2016-08-23 14:32:00
    // 介绍两种方法,源程序如下: //////////////////////////////////////////////////////////////////////// 方法一:#include <cstring> #include <iostream>#include <cstring>...
  • c++字符串拼接的两种方法

    千次阅读 2017-04-17 11:43:17
    一种是使用stringstream类 ...其中 itos 函数要自己定义 string itos(int i) {  stringstream s;  s;  return s.str(); } 他的内部还是调用了stringstream类
  • C++中string append函数的使用与字符串拼接

    万次阅读 多人点赞 2018-11-03 15:10:16
    常用的函数原型: basic_string &amp;amp;amp;append( const basic_string &amp;amp;amp;str ); basic_string &amp;amp;amp;append( const char *str ); basic_string &amp;amp;amp;append( ...
  • C++字符串与C语言中的字符串处理函数 一.C++中的字符串类 下面是简单的一种实现: #ifndef STRING_H_INCLUDED #define STRING_H_INCLUDED class String { public: String (const char* cstr = 0); String ...
  • 自百度百科 原型 ...把src所指字符串添加到dest结尾处(覆盖dest结尾处的'\0')并添加'\0'。 说明 src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串。 返回指向des
  • 原文:... ... 最近写的程序用到大量拼接字符串,为了提高拼接效率,比较了一下+=、append、stringstream、sprintf四种拼接字符串的方法。 测试方法  比较方法是...
  • 1. string字符串拼接 a. 拼接char指针(C - String)类型的字符串, 可以指定长度 如果没有指定长度,拼接C - String的起始位置到'\0'的位置 char a[] = { 'a', 'b', 'c', 'd', '\0'}; const char *b = "wang...
  • C/C++——字符串拼接

    2021-05-19 09:36:15
    总结一下C++中的字符串拼接方式,有以下几种: 1.sprintf()函数 // 函数定义 int sprintf(char *string, char *format [,argument,...]); // 用法,拼接"11"和str2 char str1[10]; char str2[10] = "999"; ...
  • string字符串拼接 功能描述: 实现在字符串末尾拼接字符串 函数原型: 代码如下: #include <iostream> using namespace std; #include <cstring> //string字符串拼接 void test01() { string str1 =...
  • #include// 通过此文件来提供来提供sqrt()函数的原型int main() { using namespace std;double area; cout , in square feet ,of your home :"; cin >> area; 列表内容cin.get(); double s
  • c/c++字符串函数

    2015-04-29 12:46:56
    C/C++字符串函数

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 20,665
精华内容 8,266
关键字:

c++字符串拼接函数

c++ 订阅