在 C++ 中轻松实现字符串与字符数组的相互转换

news2025/1/22 9:11:47

在 C++ 中轻松实现字符串与字符数组的相互转换

  • 引言
  • 一、将字符串转换为 char 数组
    • 1.1、C++ 中的 c_str()和 strcpy()函数
    • 1.2、使用 for 循环中的字符串到字符数组的转换
  • 二、将 char 数组转换为字符串
    • 2.1、C++ 运算符 '+'
    • 2.2、C++ 重载 '=' 运算符
    • 2.3、C++ 字符串内置构造函数
  • 三、总结

引言

本文重点介绍在 C++ 中将字符串转换为 char 数组和将 char 数组转换为字符串的不同方法。
在这里插入图片描述

一、将字符串转换为 char 数组

C++ 提供了以下将字符串转换为 char 数组的技术:

  • 使用 c_str()和 strcpy() 函数。
  • 使用 for 循环。

1.1、C++ 中的 c_str()和 strcpy()函数

C++ 函数c_str()以及 C++ 字符串函数strcpy()可用于轻松地将字符串转换为字符数组。

c_str()方法表示字符串数组中的字符序列,后跟一个空字符 '\0'。它返回指向字符串的 null 指针。

语法:

string-name.c_str();
  1. 首先使用 c_str() 方法来获取字符串的所有字符以及终止 null 字符。
  2. 此外,声明一个 char 类型的空数组来存储结果,即将字符串转换为 char 数组的结果。
  3. 最后,使用 strcpy() 方法将c_str()方法生成的字符序列复制到空 char 数组中。

示例:

#include <bits/stdc++.h> 
using namespace std; 

int main() 
{ 
	 
	string str = "";
	cout<<"Enter the string:\n";
	
	cin>>str;

	char arr[str.length() + 1]; 

	strcpy(arr, str.c_str()); 
    cout<<"String to char array conversion:\n";
	for (int i = 0; i < str.length(); i++) 
		cout << arr[i]; 

	return 0; 
}

1.2、使用 for 循环中的字符串到字符数组的转换

为了将 char 数组转换为字符串,可以使用 C++ for 循环。

  1. 首先创建一个 char 类型的空数组。
  2. 然后遍历输入字符串。
  3. 在迭代时将字符存储到 char 数组中。

示例:

#include <bits/stdc++.h> 
using namespace std; 

int main() 
{ 
	 
	string str = "";
	cout<<"Enter the string:\n";
	
	cin>>str;

	char arr[str.length() + 1]; 
    cout<<"String to char array conversion:\n";
    for (int x = 0; x < sizeof(arr); x++) { 
        arr[x] = str[x]; 
        cout << arr[x]; 
    } 

	return 0; 
}

二、将 char 数组转换为字符串

用于在 C++ 中将 char 数组转换为字符串的技术:

  • “+”运算符。
  • C++ 重载“=”运算符。
  • C++ 内置构造函数。

2.1、C++ 运算符 ‘+’

C++提供了将数据项连接或添加到变量的功能:'+' operator

  1. 创建一个新的空字符串来存储结果。
  2. 接下来,使用 for 循环遍历输入 char 数组。
  3. 在遍历数组的过程中,使用 ‘+’ 运算符将字符连接到字符串。

示例:

#include <bits/stdc++.h> 
using namespace std; 


int main() 
{ 
	char arr[] = { 'L', 'I', 'O', 'N', 'L', 'O', 'N', 'G'}; 
	
	int size_arr = sizeof(arr) / sizeof(char); 
	string str = ""; 
	for (int x = 0; x < size_arr; x++) { 
		str = str + arr[x]; 
	} 
	cout<<"Converted char array to string:\n";
	cout << str << endl; 
	return 0; 
}

输出:

Converted char array to string:
LIONLONG

2.2、C++ 重载 ‘=’ 运算符

C++具有重载的概念,它使操作员执行基本或默认操作以外的其他操作。

  1. 创建一个新的空字符串。
  2. 使用 '=' operator overload 将数据项逐个字符存储到新创建的空字符串中。

示例:

#include <bits/stdc++.h> 
using namespace std; 


int main() 
{ 
	char arr[] = { 'L', 'I', 'O', 'N', 'L', 'O', 'N', 'G'}; 
	
	int size_arr = sizeof(arr) / sizeof(char); 
	string str = ""; 
	str = arr;
	cout<<"Converted char array to string:\n";
	cout << str << endl; 
	return 0; 
}

输出:

Converted char array to string:
LIONLONG

2.3、C++ 字符串内置构造函数

在将 char 数组转换为字符串的上下文中,可以使用 C++ 字符串构造函数。

语法:

string string-name(char array-name);

此构造函数采用以 null 字符结尾的字符序列作为输入参数。

注意:这只能在整个程序中声明字符串时使用。

示例:

#include <bits/stdc++.h> 
using namespace std; 

int main() 
{ 
	char arr[] = { 'L', 'I', 'O', 'N', 'L', 'O', 'N', 'G'}; 
	int size_arr = sizeof(arr) / sizeof(char); 
	string str(arr);
	cout<<"Converted char array to string:\n";
	cout <<str<< endl; 
	return 0; 
}

输出:

Converted char array to string:
LIONLONG

三、总结

在本文中了解了在 C++ 中将字符串转换为 char 数组的各种技术,反之亦然。

参考:C++ c_str()方法。

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1576456.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

阿里云服务器可以干嘛 阿里云服务器应用场景有哪些

阿里云服务器可以干嘛&#xff1f;能干啥你还不知道么&#xff01;简单来讲可用来搭建网站、个人博客、企业官网、论坛、电子商务、AI、LLM大语言模型、测试环境等&#xff0c;阿里云百科aliyunbaike.com整理阿里云服务器的用途&#xff1a; 阿里云服务器活动 aliyunbaike.com…

qt环境搭建-镜像源安装Qt Creator(5.15.2)以及配置环境变量

前言&#xff1a; 版本&#xff1a;5.15.2 镜像源&#xff1a;ustc与清华 纯小白&#xff0c;找了半天的镜像源安装qtcreator&#xff0c;搞了半天结果安装的是最新的&#xff0c;太新的对小白很不友好&#xff0c;bug比较多&#xff0c;支持的系统也不全&#xff0c;口碑不…

011_C标准库函数之<time.h>

头文件<time.h>中说明了一些用于处理日期和时间的类型和函数。其中的一部分函数用于处理当地时间&#xff0c;因为时区等原因&#xff0c;当地时间与日历时间可能不相同。clock_t和time_t是两个用于表示时间的算术类型&#xff0c;而struct tm则用于存放日历时间的各个成…

配置vscode用于STM32编译,Debug,github上传拉取

配置环境参考&#xff1a; Docs 用cubemx配置工程文件&#xff0c;用VScode打开工程文件。 编译的时候会有如下报错&#xff1a; vscode出现process_begin :CreateProcess failed 系统找不到指定文件 解决方案&#xff1a;在你的makefile中加上SHELLcmd.exe就可以了 参考…

mysql jdbc数据库速成总结

第一步导图jar包 我们下载一个jar 按照我的习惯是把这个jar包放在桌面上 方便后续操作 然后对这个jar包ctrl c复制 接着我们在idea里面创建一个目录 我们命名为lib 然后在这个lib安ctrl V进行粘贴 然后右键这个lib 找到添加为库 我的idea好像没有选择 只有添加为模块 点…

【LeetCode: 455. 分发饼干 + 贪心】

&#x1f680; 算法题 &#x1f680; &#x1f332; 算法刷题专栏 | 面试必备算法 | 面试高频算法 &#x1f340; &#x1f332; 越难的东西,越要努力坚持&#xff0c;因为它具有很高的价值&#xff0c;算法就是这样✨ &#x1f332; 作者简介&#xff1a;硕风和炜&#xff0c;…

2024/4/1—力扣—最小高度树

代码实现&#xff1a; /*** Definition for a binary tree node.* struct TreeNode {* int val;* struct TreeNode *left;* struct TreeNode *right;* };*/ struct TreeNode* buildTree(int *nums, int l, int r) {if (l > r) {return NULL; // 递归出口}struct…

【AI】ubuntu 22.04 本地搭建Qwen-VL 支持图片识别的大语言模型 AI视觉 【2】 4060ti 16G 也顶不住

接上篇 【AI】ubuntu 22.04 本地搭建Qwen-VL 支持图片识别的大语言模型 AI视觉-CSDN博客 迁移到4060ti 16G 环境下&#xff0c;仍然报错&#xff0c;显存不足&#xff01;

一切皆是为了交流-DDD通用语言

通用语言是什么&#xff1f; 通用语言是一种在特定领域内的沟通方式&#xff0c;可以由文字、语言、手势、图像等一切与达到沟通目的的元素组成。 比如&#xff0c;在中国内&#xff0c;方言是闽南的小王与方言是粤语的小张进行交流&#xff0c;那么&#xff0c;普通话是他们…

汇编基础----mov基本操作

汇编基础----mov基本操作 下载VS2022 这个网上教程很多,自行下载安装即可 新建项目 选择空项目,如何点击下一步 在源文件下创建这二个文件 修改配置使asm文件能被解析,右击项目名(demo)->生成依赖项->生成自定义->勾选如下图所示选项->确定 立即数寻址 main…

N5171B是德科技N5171B信号发生器

181/2461/8938产品概述&#xff1a; N5171B EXG 射频模拟信号发生器具有最佳的 EXG&#xff0c;旨在满足您对组件参数测试和接收器校准的信号需求。其出色的硬件性能可提供更快的吞吐量、更长的正常运行时间以及极好的准确性和可重复性。 Agilent / HP N5171B EXG 射频模拟信…

vue的 blob文件下载文件时,后端自定义异常,并返回json错误提示信息,前端捕获信息并展示给用户

1.后端返回的json数据结构为&#xff1a; {"message":"下载失败&#xff0c;下载文件不存在&#xff0c;请联系管理员处理&#xff01;","code":500} 2.vue 请求后台接口返回的 Blob数据 3.问题出现的原因是&#xff0c;正常其他数据列表接口&…

MySQL操作DML

目录 1.概述 2.插入 3.更新 4.删除 5.查询 6.小结 1.概述 数据库DML是数据库操作语言&#xff08;Data Manipulation Language&#xff09;的简称&#xff0c;主要用于对数据库中的数据进行增加、修改、删除等操作。它是SQL语言的一部分&#xff0c;用于实现对数据库中数…

基于wsl的Ubuntu20.04上安装桌面环境

在子系统Ubuntu20.04上安装桌面环境 1. 更换软件源 由于Ubuntu默认的软件源在国外&#xff0c;有时候后可能会造成下载软件卡顿&#xff0c;这里我们更换为国内的阿里云源&#xff0c;其他国内源亦可。 双击打开Ubuntu20.04 LTS图标&#xff0c;在命令行中输入 # 备份原来的软…

OpenCV 使用freetype在图像上写中文

​​​​​​ #include "opencv2/opencv.hpp" #include "opencv2/freetype.hpp"static cv::Ptr<cv::freetype::FreeType2> getFreeType() {static cv::Ptr<cv::freetype::FreeType2> ft2;if (ft2.empty()){ft2 cv::freetype::createFreeType…

论文阅读《Semantic Prompt for Few-Shot Image Recognition》

论文地址&#xff1a;https://arxiv.org/pdf/2303.14123.pdf 论文代码&#xff1a;https://github.com/WentaoChen0813/SemanticPrompt 目录 1、存在的问题2、算法简介3、算法细节3.1、预训练阶段3.2、微调阶段3.3、空间交互机制3.4、通道交互机制 4、实验4.1、对比实验4.2、组…

家庭网络防御系统搭建-家庭网络防御系统搭建-NDR之zeek安装配置过程详解

前面的文章&#xff0c;说明了raspiberry系统和硬件相关内容&#xff0c;参考家庭网络防御系统搭建-树莓派raspberry PI硬件和系统准备。本文将介绍NDR系统中的zeek安装过程。 corelight vs zeek 使用zeek获取网络的transaction log有两种方式&#xff0c;一种是使用coreligh…

从头开发一个RISC-V的操作系统(五)汇编语言编程

文章目录 前提RISC-V汇编语言入门RISC-V汇编指令总览汇编指令操作对象汇编指令编码格式add指令介绍无符号数 练习参考链接 目标&#xff1a;通过这一个系列课程的学习&#xff0c;开发出一个简易的在RISC-V指令集架构上运行的操作系统。 前提 这个系列的大部分文章和知识来自于…

python语言程序设计完结

概述&#xff1a; 程序设计是计算机可编程的体现 程序设计&#xff0c;亦称编程&#xff0c;是深度应用计算机的主要手段 程序设计已经成为当今社会需求量最大的职业技能之一 程序设计语言是一种用于交互&#xff08;交流&#xff09;的人造语言 程序设计语言&#xff0c;亦称…

论文阅读AI工具链

文献检索 可以利用智谱清言来生成合适的文献检索式&#xff0c;并根据需要不断调整。 谷歌学术 在Google Scholar中进行检索时&#xff0c;您可以使用类似的逻辑来构建您的搜索式&#xff0c;但是语法会有所不同。Google Scholar的搜索框接受普通的文本搜索&#xff0c;但是…