字符串拼接之char实现
目录
一、前言
二、memcpy函数用法
三、代码实现
一、前言
c++中想到字符串拼接,我们都知道可以用c++库中std::string的字符串中的简单加法进行拼接。示例:
int main()
{std::string str1 = "hello";std::string str2 = "World";std::string str = str1 + str2;std::cout << "str = " << str;
}
但如果用字符char声明的原生字符串,应该很少人能够想到实现这一功能,其实很简单只需要掌握c语言中的memcpy函数就能实现这一功能。
二、memcpy函数用法
在C语言中,memcpy是一个库函数,用于从源内存块复制指定数量的字节到目标内存块。
memcpy函数的原型如下:
void *memcpy(void *dest, const void *src, size_t n);
参数说明:
dest:指向目标内存块的指针,即要复制到的位置。src:指向源内存块的指针,即要从中复制数据的位置。n:要复制的字节数。
三、代码实现
int main()
{char str1[0x10]{ "123"}; // 初始化字符串大小为16字节,值为:“123”char str2[0x10]{ "456" }; char str3[0x20]; // 将str1复制给str3memcpy(str3, str1, strlen(str1)); // 将str2复制给str3,注意复制的起点指针地址为str的指针加上str1的字节大小memcpy(str3 + strlen(str1), str2, strlen(str2) + 1);std::cout << str3 << std::endl;
}
注意点:
memcpy(str3 + strlen(str1), str2, strlen(str2) + 1);
1.注意复制的起始位置,在将str2复制给str3时,注意复制的起点指针地址为str的指针加上str1的字节大小。
2.memcpy的第三个参数为str2的字节长度再+1,这里很重要,必须要加1。
这里的1指的是一个空字符为: \0,参考字符串在内存中的存储。字符串在这些语言中是以字符数组的形式存在的,并且它们以空字符(null character)\0(其ASCII值为0)作为结记。
作用:这个空字符用于标识字符串的结束,因为C和C++中的字符串没有内置的长度信息,它们只是简单的字符数组。
如果不+1,最后打印结果为乱码:

相关文章:
字符串拼接之char实现
目录 一、前言 二、memcpy函数用法 三、代码实现 一、前言 c中想到字符串拼接,我们都知道可以用c库中std::string的字符串中的简单加法进行拼接。示例: int main() {std::string str1 "hello";std::string str2 "World";std::…...
教育的数字化转型——Kompas.ai如何变革学习体验
引言 在现代教育中,数字化转型逐渐成为提升学习效果的重要手段。随着科技的进步,人工智能(AI)在教育领域的应用越来越广泛。本文将探讨教育数字化转型的发展趋势,并介绍Kompas.ai如何通过AI技术变革学习体验。 教育数…...
域内攻击 ----> DCSync
其实严格意义上来说DCSync这个技术,并不是一种横向得技术,而是更偏向于权限维持吧! 但是其实也是可以用来横向(配合NTLM Realy),如果不牵强说得话! 那么下面,我们就来看看这个DCSyn…...
前端 JS 经典:动态执行 JS
前言:怎么将字符串当代码执行。有 4 中方式实现 eval、setTimeout、创建 script 标签、new Function 1. eval 特点:同步执行,当前作用域 var name "yq"; function exec(string) {var name "yqcoder";eval(string); …...
Laravel学习-模型注入
一. 在定义路由的时候,可以在闭包函数里引入模型, Route.get(/api/user/{user:id}, function(\App\Model\UserModel $user) {return value; }) 其中:id可以省略不写,这个意思是,请求该接口时,会UserMode…...
Django模板的使用(详细版)
1、配置 在工程中创建模板目录templates(这个名字可以变!!) 在settings.py配置文件中修改TEMPLATES配置项的DIRS值 2、定义模板 在templates目录中新建一个模板文件,如index.html 3、模板渲染 Django提供了一个函数…...
正则表达式基础
正则表达式基础 一、初识正则表达式 思考–问题答案在文末 问题1:text1 ‘height:178,weight:168,sid:123456,passwd:9527’,如何快速找出密码?问题2:text2 ‘他的电话…...
【Linux】进程间通信之命名管道
👦个人主页:Weraphael ✍🏻作者简介:目前正在学习c和算法 ✈️专栏:Linux 🐋 希望大家多多支持,咱一起进步!😁 如果文章有啥瑕疵,希望大佬指点一二 如果文章对…...
【内存管理】页表映射
页表的一些术语 现在Linux内核中支持四级页表的映射,我们先看下内核中关于页表的一些术语: 全局目录项,PGD(Page Global Directory) 上级目录项,PUD(Page Upper Directory) 中间目…...
Cloudpods 强大的多云管理平台部署
简介 Cloudpods 是一款简单、可靠的企业IaaS资源管理软件。帮助未云化企业全面云化IDC物理资源,提升企业IT管理效率。 Cloudpods 帮助客户在一个地方管理所有云计算资源。统一管理异构IT基础设施资源,极大简化多云架构复杂度和难度,帮助企业…...
深度学习的可微渲染
深度学习的可微渲染 可微渲染(Differentiable Rendering)是深度学习领域的一个重要概念,它将传统的计算机图形学与深度学习结合起来,通过使渲染过程可微分(differentiable),以便于在深度学习模…...
CAS Server Restful接口实现后台认证
背景 对于一些比较复杂定制化登录页的情况下,之前提到过可以自定义修改使用CAS Server提供的登录页这种操作已经明显跟不上复杂定制场景了,所以CAS Server也提供了支持Restful接口,支持服务端后台登陆,对于复杂登陆场景时&#x…...
Linux shell编程学习笔记58:cat /proc/mem 获取系统内存信息
0 前言 在开展系统安全检查的过程中,除了收集cpu信息,我们还需要收集内存信息。在Linux中,获取内存信息的命令很多,这里我们着重研究 cat /proc/mem命令。 1 cat /proc/mem命令 /proc/meminfo 文件提供了有关系统内存的使用情况…...
【InternLM实战营第二期笔记】07:OpenCompass :是骡子是马,拉出来溜溜
文章目录 课程实操 课程 评测的意义是什么呢?我最近也在想。看到这节开头的内容后忽然有个顿悟:如果大模型最终也会变成一种基础工具(类比软件),稳定或可预期的效果需要先于用户感知构建出来,评测 case 就…...
matlab演示银河系转动动画
代码 function GalaxyRotationSimulation()% 参数设置num_stars 1000; % 恒星数量galaxy_radius 1; % 银河系半径rotation_speed 0.05; % 旋转速度% 生成银河系中的恒星分布theta 2 * pi * rand(num_stars, 1); % 角度r galaxy_radius * sqrt(rand(num_stars, 1)); % 半径…...
备战 清华大学 上机编程考试-冲刺前50%,倒数第5天
T1:多项式求和 小K最近刚刚习得了一种非常酷炫的多项式求和技巧,可以对某几类特殊的多项式进行运算。非常不幸的是,小K发现老师在布置作业时抄错了数据,导致一道题并不能用刚学的方法来解,于是希望你能帮忙写一个程序…...
leetCode127. 单词接龙
leetCode127. 单词接龙 // bfs 剪枝 class Solution { public:int ladderLength(string beginWord, string endWord, vector<string>& wordList) {// 1.将所有的单词放在set字段中unordered_set<string> s;for (auto & ele : wordList) s.insert(ele);//…...
进程概念(二)
目录 进程优先级基本概念查看系统进程PRI and NIPRI vs NI修改进程优先级的命令renice修改优先级进程其他概念 环境变量基本概念查看环境变量方法常见环境变量PATHHOMESHELL 查看环境变量环境变量相关的命令 环境变量特征命令行参数main函数中的俩个参数 argc argvmain函数的第…...
java程序100道01—20
1.用循环的嵌套,输出输出如下图形 * * * * * * * * * * * * * * * * * * * * * * * * * package Exercises.One_Hundred; public class Demo01 {public static void main(String[] args) {for(int i1;i<5;i){for(int j1;j<2*i-1;j){Sys…...
让GNSSRTK不再难【第二天-第7部分2】
状态更新计算过程: 计算卡尔曼增益: 根据预测的误差协方差矩阵 P k − P_k^- Pk− 和观测噪声协方差矩阵 R R R 计算卡尔曼增益 K k K_k Kk: K k P k − H T ( H P k − H T R ) − 1 K_k P_k^- H^T (H P_k^- H^T R)^{-1} KkPk…...
postgresql(15)使用yum安装后环境变量信息
postgresql(15)使用yum安装后,其默认家目录,其环境变量信息如下 1.家目录 -bash-4.2$ whoami postgres -bash-4.2$ cd -bash-4.2$ pwd /var/lib/pgsql -bash-4.2$ 2.环境变量信息 -bash-4.2$ ls -la total 44 drwx------ 3 postgres postgres 95 Dec 18 10:49 . drwx…...
Python算法宝库:从机器学习到科学计算的完整实现指南
Python算法宝库:从机器学习到科学计算的完整实现指南 【免费下载链接】Python All Algorithms implemented in Python 项目地址: https://gitcode.com/GitHub_Trending/pyt/Python 在当今数据驱动的时代,掌握高效的算法实现是每个开发者的核心竞争…...
光伏板在烈日下疯狂输出,风机叶片转得比广场舞大妈还欢快,但怎么让这俩货稳定给电解槽供电才是技术活。咱今天就掰扯掰扯风光储混合制氢系统里那些硬核玩法
风光储共交流母线制氢模型,光伏,风机采用mppt实现最大功率跟踪;储能采用电压电流双闭环控制;并网采用pq控制,整流采用svpwm调制。 制氢可接pem~碱性电解槽。先说MPPT这个老司机,光伏和风机都得靠它榨干每一…...
如何用Spec Kit规范驱动开发彻底改变你的编程方式:终极指南
如何用Spec Kit规范驱动开发彻底改变你的编程方式:终极指南 【免费下载链接】spec-kit 💫 Toolkit to help you get started with Spec-Driven Development 项目地址: https://gitcode.com/gh_mirrors/sp/spec-kit Spec Kit是一个革命性的开源工具…...
小米智能家居与Home Assistant无缝集成指南:零代码实现全屋设备统一管控
小米智能家居与Home Assistant无缝集成指南:零代码实现全屋设备统一管控 【免费下载链接】ha_xiaomi_home Xiaomi Home Integration for Home Assistant 项目地址: https://gitcode.com/GitHub_Trending/ha/ha_xiaomi_home 您是否曾因不同品牌智能设备无法互…...
RetinaFace在Vue前端项目中的应用:实时人脸检测演示
RetinaFace在Vue前端项目中的应用:实时人脸检测演示 1. 这个检测效果到底有多“准” 打开摄像头的那一刻,画面里的人脸轮廓立刻被框了出来——不是那种模糊的、晃动的虚线框,而是稳稳地贴合着面部边缘,连微微侧脸时的弧度都跟得…...
如何用TileLang实现高性能GPU算子:从入门到精通的完整指南
如何用TileLang实现高性能GPU算子:从入门到精通的完整指南 【免费下载链接】tilelang Domain-specific language designed to streamline the development of high-performance GPU/CPU/Accelerators kernels 项目地址: https://gitcode.com/GitHub_Trending/ti/…...
circlize环形可视化指南:突破维度限制的数据叙事艺术
circlize环形可视化指南:突破维度限制的数据叙事艺术 【免费下载链接】circlize Circular visualization in R 项目地址: https://gitcode.com/gh_mirrors/ci/circlize 一、认知升级:环形可视化如何重构数据表达逻辑? 在信息爆炸的时…...
Windows Cleaner:彻底解决C盘爆红问题的终极指南
Windows Cleaner:彻底解决C盘爆红问题的终极指南 【免费下载链接】WindowsCleaner Windows Cleaner——专治C盘爆红及各种不服! 项目地址: https://gitcode.com/gh_mirrors/wi/WindowsCleaner 你是不是经常遇到C盘爆红、系统卡顿的烦恼࿱…...
LumiPixel Canvas Quest保姆级教程:使用Docker快速部署与测试
LumiPixel Canvas Quest保姆级教程:使用Docker快速部署与测试 1. 开篇:为什么选择Docker部署? 如果你正在寻找一种快速搭建LumiPixel Canvas Quest环境的方法,Docker绝对是你的首选。想象一下,传统部署方式需要手动安…...
