📅  最后修改于: 2023-12-03 15:00:03.053000             🧑  作者: Mango
在C++中,字符串的操作是非常常见的操作之一。字符串复制即为将一个字符串的内容复制到另一个字符串中。C++中提供了多种方法用于字符串复制。
strcpy函数是C/C++中的一个标准库函数,用于将一个字符串复制到另一个字符串中。调用格式如下:
char* strcpy(char* dest, const char* src);
其中,dest为目标字符串的地址,src为源字符串的地址。
示例代码如下:
#include <iostream>
#include <cstring>
using namespace std;
int main(){
char str1[] = "Hello, world!";
char str2[20];
strcpy(str2, str1);
cout << str2 << endl;
return 0;
}
输出结果为:
Hello, world!
strncpy函数也是C/C++标准库中提供的函数,与strcpy函数不同的是,strncpy函数可以指定需要复制的字符个数。调用格式如下:
char* strncpy(char* dest, const char* src, size_t n);
其中,n为需要复制的字符个数。
示例代码如下:
#include <iostream>
#include <cstring>
using namespace std;
int main(){
char str1[] = "Good morning!";
char str2[20];
strncpy(str2, str1, 6);
str2[6] = '\0'; //手动添加字符串结束符
cout << str2 << endl;
return 0;
}
输出结果为:
Good m
需要注意的是,当源字符串的长度小于复制的字符个数时,会在目标字符串中添加用\0填充的空字符直到复制的字符个数为止。因此,在复制完字符串后需要手动添加字符串结束符。
memcpy函数是C/C++标准库中的另一个函数,与strcpy和strncpy函数不同的是,memcpy函数可以用于复制任意类型的数据,包括字符串。调用格式如下:
void* memcpy(void* dest, const void* src, size_t n);
其中,dest为目标地址,src为源地址,n为需要复制的字节数。
示例代码如下:
#include <iostream>
#include <cstring>
using namespace std;
int main(){
char str1[] = "Good evening!";
char str2[20];
memcpy(str2, str1, 6);
str2[6] = '\0'; //手动添加字符串结束符
cout << str2 << endl;
return 0;
}
输出结果为:
Good e
需要注意的是,由于memcpy函数只是简单地按字节进行复制,因此在复制字符串时需要手动添加字符串结束符。
在C++中,字符串可以使用=赋值运算符进行复制操作。但需要注意的是,使用=赋值运算符仅适用于字符数组类型的字符串。示例代码如下:
#include <iostream>
using namespace std;
int main(){
char str1[] = "Good night!";
char str2[20];
str2 = str1; //编译错误
cout << str2 << endl;
return 0;
}
由于使用=赋值运算符不能用于字符数组类型的赋值操作,因此编译时会出现错误。但可以使用strcpy函数代替。