当前位置: 首页 > news >正文

【C++练习】26.在 C++ 中,不使用 “strcpy“ 函数将一个字符串复制到另一个字符串

目录

  • 方法概览
    • 1. C风格字符数组的复制
      • 1.1 循环逐个字符复制
      • 1.3 使用 "memcpy" 函数
    • 2. 使用 C++ "std::string" 类
      • 2.1 使用赋值运算符 "="
      • 2.2 使用拷贝构造函数
      • 2.3 使用 "assign()" 方法
      • 选择建议
    • 注意事项

在 C++ 中,不使用 “strcpy” 函数将一个字符串复制到另一个字符串有多种方法,主要可分为使用 C 风格字符数组 和 C++ “std::string” 类 两大方向。

方法概览

方法类别 具体方法 关键特点 适用场景
C风格字符数组 循环逐个字符复制 最基础,手动管理内存和结束符 需要完全控制底层操作或受限环境
- 使用指针操作 更接近底层,可能更高效 理解指针操作,追求性能
- 使用 “memcpy” 按字节块复制,效率高 复制包括 “’\0’” 在内的整个字符串数据
C++ “std::string” 赋值运算符 “=” 最简单、安全,自动管理内存 现代C++代码的推荐方式
- 拷贝构造函数 在创建新对象时直接初始化 需要在对象构造时复制字符串
- “assign()” 方法 提供更灵活的复制选项(如子串) 需要更复杂的复制逻辑

1. C风格字符数组的复制

C风格的字符串是以空字符 ("’\0’") 结尾的字符数组。复制时需要确保目标数组有足够空间,并手动添加结束符。

1.1 循环逐个字符复制

思路:遍历源字符串的每个字符(直到遇到 “’\0’”),逐个赋值给目标数组,最后在目标数组末尾手动添加 “’\0’”。

#include <iostream>void copyString(const char* src, char* dest) {int i = 0;// 循环复制字符,直到遇到源字符串的结束符while (src[i] != '\0') {dest[i] = src[i];i++;}dest[i] = '\0'; // 手动添加结束符
}int main() {const char* src = "Hello, World!"
http://www.dtcms.com/a/394432.html

相关文章:

  • 【分布式技术】Baerer token刷新机制详细解读
  • 第十三章 Ant与Jenkins的集成
  • 通义万相正式开源Wan2.2-Animate动作生成模型
  • 课后作业-2025-09-21
  • 比 IDEA 容器自动化部署更轻量便捷的工具
  • 知识图谱技术对自然语言处理深层语义分析的影响与启示研究
  • Javase 高级技术 —— 01 反射
  • Linux 孤儿进程与进程的优先级和切换和调度
  • QML学习笔记(七)QML的基本数据类型
  • 基于51单片机电子钟闹钟12/24小时制LCD显示
  • 小程序开发全解析:从结构到API
  • 异步方法在C#中的使用
  • js时间戳转换日期格式 yyyy-mm-dd
  • 信号处理方法概述
  • 固定收益理论(五)债券投资归因模型
  • 【论文速递】2025年第18周(Apr-27-May-03)(Robotics/Embodied AI/LLM)
  • 3D视觉——求出目标物体在相机坐标系下的位姿信息
  • 固态和机械硬盘损坏后的不同
  • Linux 基础IO
  • pandawiki ai 无法生成摘要
  • m语言可视化log中的变量信息
  • MySQL:库操作和常用数据类型
  • uniapp实现view块级元素横竖屏切换
  • 【编号74】河北地理基础数据(道路、水系、四级行政边界、地级城市、DEM等)
  • Python: 将wxauto发布为接口,并部署为Windows服务
  • 2025年度SEO优化公司
  • 基于Markdown的静态网站生成器完全指南
  • hot100——第十一周
  • 嵌入式(2)——HAL_GetTick()
  • 《第18课——C语言结构体:从Java的“豪华别墅“到C的“集装箱宿舍“——内存对齐、位域抠门与指针破门的底层狂欢》