当前位置: 首页 > 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…...

别再被ipykernel报错困扰:三种方法修复Jupyter中argparse的argument错误

彻底解决Jupyter中ipykernel与argparse冲突的工程指南 当你在Jupyter Notebook中运行包含argparse模块的Python代码时&#xff0c;是否遇到过这样的报错&#xff1a; ipykernel_launcher.py: error: argument --no-cuda: expected one argument这个看似简单的错误背后&#xff…...

终极指南:如何一键激活Cursor Pro完整功能,免费使用AI编程助手

终极指南&#xff1a;如何一键激活Cursor Pro完整功能&#xff0c;免费使用AI编程助手 【免费下载链接】cursor-free-vip [Support 0.45]&#xff08;Multi Language 多语言&#xff09;自动注册 Cursor Ai &#xff0c;自动重置机器ID &#xff0c; 免费升级使用Pro 功能: You…...

RK3568平台开发系列讲解(热拔插篇)内核是如何发送事件到用户空间

🚀返回专栏总目录 文章目录 一、相关接口函数 二、udevadm 命令 三、实验程序 四、运行效果 沉淀、分享、成长,让自己和他人都能有所收获!😄 一、相关接口函数 kobject_uevent 是 Linux 内核中的一个函数, 用于生成和发送 uevent 事件。 它是 udev 和其他设备管理工具与…...

Input Leap:一款让多设备共享键盘鼠标变得简单高效的开源KVM软件

Input Leap&#xff1a;一款让多设备共享键盘鼠标变得简单高效的开源KVM软件 【免费下载链接】input-leap Open-source KVM software 项目地址: https://gitcode.com/gh_mirrors/in/input-leap 你是否厌倦了在多个电脑之间来回切换键盘和鼠标&#xff1f;是否希望用一套…...

BepInEx插件框架:为什么它是Unity游戏Mod开发的终极解决方案?

BepInEx插件框架&#xff1a;为什么它是Unity游戏Mod开发的终极解决方案&#xff1f; 【免费下载链接】BepInEx Unity / XNA game patcher and plugin framework 项目地址: https://gitcode.com/GitHub_Trending/be/BepInEx 你是否曾经想过为喜欢的Unity游戏添加新功能&…...

Programming Bitcoin最佳实践:10个核心编程技巧助你从零掌握比特币开发 [特殊字符]

Programming Bitcoin最佳实践&#xff1a;10个核心编程技巧助你从零掌握比特币开发 &#x1f680; 【免费下载链接】programmingbitcoin Repository for the book 项目地址: https://gitcode.com/gh_mirrors/pr/programmingbitcoin 想要深入理解比特币技术并掌握区块链编…...

深入解析 magic-cli:基于模板的自动化代码生成工具设计与实践

1. 项目概述&#xff1a;一个能“变魔术”的命令行工具最近在折腾一些自动化脚本和项目脚手架时&#xff0c;发现了一个挺有意思的开源项目&#xff0c;叫magic-cli。乍一看这个名字&#xff0c;你可能会觉得有点玄乎&#xff0c;命令行工具还能玩出什么“魔法”来&#xff1f;…...

3步解锁任天堂控制器PC潜能:WiinUPro开源适配神器完全指南

3步解锁任天堂控制器PC潜能&#xff1a;WiinUPro开源适配神器完全指南 【免费下载链接】WiinUPro 项目地址: https://gitcode.com/gh_mirrors/wi/WiinUPro 还在为任天堂控制器无法在PC上使用而烦恼吗&#xff1f;WiinUPro开源项目为你解决这一难题&#xff01;这是一款…...

终极MifareOneTool使用指南:如何零基础玩转MIFARE经典卡的Windows图形化神器

终极MifareOneTool使用指南&#xff1a;如何零基础玩转MIFARE经典卡的Windows图形化神器 【免费下载链接】MifareOneTool A GUI Mifare Classic tool on Windows&#xff08;停工/最新版v1.7.0&#xff09; 项目地址: https://gitcode.com/gh_mirrors/mi/MifareOneTool …...

MATLAB集成大语言模型:无缝融合AI能力与工程计算生态

1. 项目概述&#xff1a;当MATLAB遇见大语言模型如果你是一位工程师、研究员或者数据分析师&#xff0c;并且你的日常工作离不开MATLAB&#xff0c;那么你很可能已经感受到了AI浪潮的冲击。大语言模型&#xff08;LLMs&#xff09;如ChatGPT、Llama等&#xff0c;正在重塑我们处…...