用C语言怎么将两个字符串连接起来?
1)简单来,直接用 strcat 函数,需要包含头文件 string.h2)自己实现的话也不麻烦,但是要考虑一些细节:假设两个字符串指针为 str1,str2 ,现在要讲 str1 和 str2 连接成一个新的字符串。a.考虑指针 str1,str2 是否非空b.如果将str2的内容直接连接到str1的末尾,要考虑str1是否有足够的剩余空间来放置连接上的str2的内容。如果用一个新的内存空间来保存str1和str2的连接结果,需要动态分配内存空间。
用C语言:写一个函数,将两个字符串连接?
字符串连接:即将字符串b复制到另一个字符a的末尾,并且字符串a需要有足够的空间容纳字符串a和字符串b。
#include<stdio.h>void mystrcat(char a[],char b[]){//把a和b拼接起来 int i=0,j=0; while(a[i++]!='\0'); i--; while(b[j]!='\0'){ a[i++]=b[j++]; } a[i]='\0'; }int main(){ char a[100],b[100]; gets(a); gets(b); mystrcat(a,b); puts(a); return 0;}/*运行结果:abcdefabcdef*/
C++:怎样在string类中完成两个字符串的连接,复制?
当进行string对象和字符串字面值进行连接时,+操作符的左右至少出现一个是string类型的。
string s1 = "hello";
string s2 = "world";
string s3 = s1 + ",";//ok
string s4 = "hello" + ",";//error
string s5 = s1 + "," + "world";ok
string s6 = "hello" + "," + s2;error
s4错误的原因是试图直接将两个字符串的字面值进行相加;
s5没错因为前面一个+相当于把前面两个先做temp = s1+",";的操作,temp是字符串型,然后将temp与后面的进行相加;
s6错误的原因参照s4、s5就知道了。
补充:重载就是对已有的操作符进行重新定义,以适应不同的数据类型,比如string s1 = string s2;int i1 = int i2;如果要用自定义的类型type_self,使得type_self tp1 = type_self tp2;一般的C++标准库里应该都有集成了,只有用到自己定义的数据类型就得重新写函数定义了。
string中的字符串拷贝:
String::String(const String &s):
_cstr(s._cstr),
_used(s._used),
_length(s._length),
_capacity(s._capacity)
{
++*_used;
}