📜  在 CC++ 中复制字符串的不同方法(1)

📅  最后修改于: 2023-12-03 15:37:18.799000             🧑  作者: Mango

在 C/C++ 中复制字符串的不同方法

在 C/C++ 中,复制字符串是一项常见的操作,本文将介绍几种常见的复制字符串的方法。

方法一:strcpy()

strcpy() 函数是 C/C++ 标准库中常用的函数,用于将一个字符串复制到另一个字符数组中,其函数原型如下:

char* strcpy(char* dest, const char* src);

其中,dest 是目标字符数组,src 是源字符串。该函数会将 src 中的字符串复制到 dest 中,并返回 dest 的起始地址。需要注意的是,dest 的大小必须足够大,能够容纳 src 的所有字符以及结尾的空字符。

以下是一个使用 strcpy() 函数复制字符串的示例程序:

#include <iostream>
#include <cstring>

int main() {
    char src[20] = "hello world";
    char dest[20];
    std::strcpy(dest, src);
    std::cout << dest << std::endl;
    return 0;
}

输出:

hello world
方法二:strncpy()

strncpy() 函数是类似于 strcpy() 函数的一个函数,其函数原型如下:

char* strncpy(char* dest, const char* src, size_t n);

其中,n 表示最大复制的字符数。如果 src 中的字符串长度小于 n,则剩余的字符用空字符填充。需要注意的是,如果 src 的长度大于等于 n,则 dest 必须手动添加空字符。

以下是一个使用 strncpy() 函数复制字符串的示例程序:

#include <iostream>
#include <cstring>

int main() {
    char src[20] = "hello world";
    char dest[20];
    std::strncpy(dest, src, 5);
    dest[5] = '\0'; // 手动添加空字符
    std::cout << dest << std::endl;
    return 0;
}

输出:

hello
方法三:memcpy()

memcpy() 函数是 C/C++ 标准库中常用的函数,用于将一个指定长度的内存块从源地址复制到目标地址,其函数原型如下:

void* memcpy(void* dest, const void* src, size_t n);

其中,n 表示最大复制的字节数。该函数会将 src 中的 n 个字节复制到 dest 中。

以下是一个使用 memcpy() 函数复制字符串的示例程序:

#include <iostream>
#include <cstring>

int main() {
    const char* src = "hello world";
    char dest[20];
    std::memcpy(dest, src, std::strlen(src) + 1);
    std::cout << dest << std::endl;
    return 0;
}

输出:

hello world

以上就是 C/C++ 中复制字符串的几种常见方法。