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

字符串拼接之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中想到字符串拼接&#xff0c;我们都知道可以用c库中std::string的字符串中的简单加法进行拼接。示例&#xff1a; int main() {std::string str1 "hello";std::string str2 "World";std::…...

教育的数字化转型——Kompas.ai如何变革学习体验

引言 在现代教育中&#xff0c;数字化转型逐渐成为提升学习效果的重要手段。随着科技的进步&#xff0c;人工智能&#xff08;AI&#xff09;在教育领域的应用越来越广泛。本文将探讨教育数字化转型的发展趋势&#xff0c;并介绍Kompas.ai如何通过AI技术变革学习体验。 教育数…...

域内攻击 ----> DCSync

其实严格意义上来说DCSync这个技术&#xff0c;并不是一种横向得技术&#xff0c;而是更偏向于权限维持吧&#xff01; 但是其实也是可以用来横向&#xff08;配合NTLM Realy&#xff09;&#xff0c;如果不牵强说得话&#xff01; 那么下面&#xff0c;我们就来看看这个DCSyn…...

前端 JS 经典:动态执行 JS

前言&#xff1a;怎么将字符串当代码执行。有 4 中方式实现 eval、setTimeout、创建 script 标签、new Function 1. eval 特点&#xff1a;同步执行&#xff0c;当前作用域 var name "yq"; function exec(string) {var name "yqcoder";eval(string); …...

Laravel学习-模型注入

一. 在定义路由的时候&#xff0c;可以在闭包函数里引入模型&#xff0c; Route.get(/api/user/{user:id}, function(\App\Model\UserModel $user) {return value; }) 其中&#xff1a;id可以省略不写&#xff0c;这个意思是&#xff0c;请求该接口时&#xff0c;会UserMode…...

Django模板的使用(详细版)

1、配置 在工程中创建模板目录templates&#xff08;这个名字可以变&#xff01;&#xff01;&#xff09; 在settings.py配置文件中修改TEMPLATES配置项的DIRS值 2、定义模板 在templates目录中新建一个模板文件&#xff0c;如index.html 3、模板渲染 Django提供了一个函数…...

正则表达式基础

正则表达式基础 一、初识正则表达式 思考–问题答案在文末 问题1&#xff1a;text1 ‘height:178&#xff0c;weight&#xff1a;168&#xff0c;sid&#xff1a;123456&#xff0c;passwd:9527’&#xff0c;如何快速找出密码&#xff1f;问题2&#xff1a;text2 ‘他的电话…...

【Linux】进程间通信之命名管道

&#x1f466;个人主页&#xff1a;Weraphael ✍&#x1f3fb;作者简介&#xff1a;目前正在学习c和算法 ✈️专栏&#xff1a;Linux &#x1f40b; 希望大家多多支持&#xff0c;咱一起进步&#xff01;&#x1f601; 如果文章有啥瑕疵&#xff0c;希望大佬指点一二 如果文章对…...

【内存管理】页表映射

页表的一些术语 现在Linux内核中支持四级页表的映射&#xff0c;我们先看下内核中关于页表的一些术语&#xff1a; 全局目录项&#xff0c;PGD&#xff08;Page Global Directory&#xff09; 上级目录项&#xff0c;PUD&#xff08;Page Upper Directory&#xff09; 中间目…...

Cloudpods 强大的多云管理平台部署

简介 Cloudpods 是一款简单、可靠的企业IaaS资源管理软件。帮助未云化企业全面云化IDC物理资源&#xff0c;提升企业IT管理效率。 Cloudpods 帮助客户在一个地方管理所有云计算资源。统一管理异构IT基础设施资源&#xff0c;极大简化多云架构复杂度和难度&#xff0c;帮助企业…...

深度学习的可微渲染

深度学习的可微渲染 可微渲染&#xff08;Differentiable Rendering&#xff09;是深度学习领域的一个重要概念&#xff0c;它将传统的计算机图形学与深度学习结合起来&#xff0c;通过使渲染过程可微分&#xff08;differentiable&#xff09;&#xff0c;以便于在深度学习模…...

CAS Server Restful接口实现后台认证

背景 对于一些比较复杂定制化登录页的情况下&#xff0c;之前提到过可以自定义修改使用CAS Server提供的登录页这种操作已经明显跟不上复杂定制场景了&#xff0c;所以CAS Server也提供了支持Restful接口&#xff0c;支持服务端后台登陆&#xff0c;对于复杂登陆场景时&#x…...

Linux shell编程学习笔记58:cat /proc/mem 获取系统内存信息

0 前言 在开展系统安全检查的过程中&#xff0c;除了收集cpu信息&#xff0c;我们还需要收集内存信息。在Linux中&#xff0c;获取内存信息的命令很多&#xff0c;这里我们着重研究 cat /proc/mem命令。 1 cat /proc/mem命令 /proc/meminfo 文件提供了有关系统内存的使用情况…...

【InternLM实战营第二期笔记】07:OpenCompass :是骡子是马,拉出来溜溜

文章目录 课程实操 课程 评测的意义是什么呢&#xff1f;我最近也在想。看到这节开头的内容后忽然有个顿悟&#xff1a;如果大模型最终也会变成一种基础工具&#xff08;类比软件&#xff09;&#xff0c;稳定或可预期的效果需要先于用户感知构建出来&#xff0c;评测 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&#xff1a;多项式求和 小K最近刚刚习得了一种非常酷炫的多项式求和技巧&#xff0c;可以对某几类特殊的多项式进行运算。非常不幸的是&#xff0c;小K发现老师在布置作业时抄错了数据&#xff0c;导致一道题并不能用刚学的方法来解&#xff0c;于是希望你能帮忙写一个程序…...

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&#xff0e;用循环的嵌套&#xff0c;输出输出如下图形 * * * * * * * * * * * * * * * * * * * * * * * * * 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】

状态更新计算过程&#xff1a; 计算卡尔曼增益&#xff1a; 根据预测的误差协方差矩阵 P k − P_k^- Pk−​ 和观测噪声协方差矩阵 R R R 计算卡尔曼增益 K k K_k Kk​&#xff1a; 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} Kk​Pk…...

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算法宝库&#xff1a;从机器学习到科学计算的完整实现指南 【免费下载链接】Python All Algorithms implemented in Python 项目地址: https://gitcode.com/GitHub_Trending/pyt/Python 在当今数据驱动的时代&#xff0c;掌握高效的算法实现是每个开发者的核心竞争…...

光伏板在烈日下疯狂输出,风机叶片转得比广场舞大妈还欢快,但怎么让这俩货稳定给电解槽供电才是技术活。咱今天就掰扯掰扯风光储混合制氢系统里那些硬核玩法

风光储共交流母线制氢模型&#xff0c;光伏&#xff0c;风机采用mppt实现最大功率跟踪&#xff1b;储能采用电压电流双闭环控制&#xff1b;并网采用pq控制&#xff0c;整流采用svpwm调制。 制氢可接pem~碱性电解槽。先说MPPT这个老司机&#xff0c;光伏和风机都得靠它榨干每一…...

如何用Spec Kit规范驱动开发彻底改变你的编程方式:终极指南

如何用Spec Kit规范驱动开发彻底改变你的编程方式&#xff1a;终极指南 【免费下载链接】spec-kit &#x1f4ab; Toolkit to help you get started with Spec-Driven Development 项目地址: https://gitcode.com/gh_mirrors/sp/spec-kit Spec Kit是一个革命性的开源工具…...

小米智能家居与Home Assistant无缝集成指南:零代码实现全屋设备统一管控

小米智能家居与Home Assistant无缝集成指南&#xff1a;零代码实现全屋设备统一管控 【免费下载链接】ha_xiaomi_home Xiaomi Home Integration for Home Assistant 项目地址: https://gitcode.com/GitHub_Trending/ha/ha_xiaomi_home 您是否曾因不同品牌智能设备无法互…...

RetinaFace在Vue前端项目中的应用:实时人脸检测演示

RetinaFace在Vue前端项目中的应用&#xff1a;实时人脸检测演示 1. 这个检测效果到底有多“准” 打开摄像头的那一刻&#xff0c;画面里的人脸轮廓立刻被框了出来——不是那种模糊的、晃动的虚线框&#xff0c;而是稳稳地贴合着面部边缘&#xff0c;连微微侧脸时的弧度都跟得…...

如何用TileLang实现高性能GPU算子:从入门到精通的完整指南

如何用TileLang实现高性能GPU算子&#xff1a;从入门到精通的完整指南 【免费下载链接】tilelang Domain-specific language designed to streamline the development of high-performance GPU/CPU/Accelerators kernels 项目地址: https://gitcode.com/GitHub_Trending/ti/…...

circlize环形可视化指南:突破维度限制的数据叙事艺术

circlize环形可视化指南&#xff1a;突破维度限制的数据叙事艺术 【免费下载链接】circlize Circular visualization in R 项目地址: https://gitcode.com/gh_mirrors/ci/circlize 一、认知升级&#xff1a;环形可视化如何重构数据表达逻辑&#xff1f; 在信息爆炸的时…...

Windows Cleaner:彻底解决C盘爆红问题的终极指南

Windows Cleaner&#xff1a;彻底解决C盘爆红问题的终极指南 【免费下载链接】WindowsCleaner Windows Cleaner——专治C盘爆红及各种不服&#xff01; 项目地址: https://gitcode.com/gh_mirrors/wi/WindowsCleaner 你是不是经常遇到C盘爆红、系统卡顿的烦恼&#xff1…...

LumiPixel Canvas Quest保姆级教程:使用Docker快速部署与测试

LumiPixel Canvas Quest保姆级教程&#xff1a;使用Docker快速部署与测试 1. 开篇&#xff1a;为什么选择Docker部署&#xff1f; 如果你正在寻找一种快速搭建LumiPixel Canvas Quest环境的方法&#xff0c;Docker绝对是你的首选。想象一下&#xff0c;传统部署方式需要手动安…...