字符串之间的转换(char*、const char*、char[]、string、QString、QByteArray、int、double)

目录

一、申请空间的几种方法:

1、C语言

2、C++

二、各个字符串的转换

 1、char*  与 unsigned char*、char* 与 const char*、char* 与 char[ ]

2、string 与 char*、string 与 unsigned char*、string 与 QString、string 与 int、double

3、QString 与 int 、double、QString 与 char*

三、总结方法:


一、申请空间的几种方法:

1、C语言

void exemple
{// 申请空间int len = 1024;char* pszData = NULL;if(pszData = (char *)malloc(sizeof(len))){printf("申请空间失败!");}// 初始化申请的空间//C 库函数 void *memset(void *str, int c, size_t n) //复制字符 c(一个无符号字符)到参数 str 所指向的字符串的前 n 个字符。memset(pszData, 0, len);// 释放内存,防止内存泄漏free pszData;pszData = NULL;
}

2、C++

void exemple
{// 申请空间int len = 1024;char* pszData = new char[len];if(pszData == NULL){printf("申请空间失败!");}// 释放内存,防止内存泄漏delete[] pszData;//申请时候有长度,就是delete[],单个指针就是deletepszData = NULL;
}

二、各个字符串的转换

 1、char*  与 unsigned char*、char* 与 const char*、char* 与 char[ ]

(1)char*  与 unsigned char*

思路:需要将 char 类型的指针强制转换为 void* 类型的指针;

           再强制转换为 unsigned char* 类型的指针,这样访问内存不会出错;

void char2unsignedChar()
{//(1) char* 转unsigned char*char* charPtr;unsigned char* ucharPtr;void* voidPtr = static_cast<void*>(charPtr);ucharPtr = static_cast<unsigned char*>(voidPtr);//(2) unsigned char* 转 char*// C++unsigned char* ucharPtr;char* charPtr = reinterpret_cast<char*>(ucharPtr);//Cunsigned char* ucharPtr;char* charPtr = (char*)(ucharPtr);
}

(2)char* 与 const char*

void char2constchar
{// const char* 转 char*char* ch = <const_cast><char*>(const char* chConst);// char* 转 const char*const char* chConst = char* ch;
}

(3)char* 与 char[ ]

void char2charArray
{// char[] 转 char *char[20] chArray = {0};char* pszCh = chArray;// char * 转 char[]char* pszCh = "Hello World!"; char[12] chArray = [0];strncpy_s(chArray, pszCh, 12);
}

2、string 与 char*、string 与 unsigned char*、string 与 QString、string 与 int、double

(1)string 与 char*

void string2Char()
{//string转char*string str = "hello";char* ch = str.c_str;//char*转string //Cchar* ch = "hello";std::string str(ch);//C++char* ch = "hello";std::string str = ch;
}

(2)string 与 unsigned char*

思路:string先抓到char*,char*再转到unsigned char*

void string2UnsignedChar()
{//string转unsigned char*string str = "hello";unsigned char *uc1 = (unsigned char *)str.c_str();//强转unsigned char *uc2 = static_cast<unsigned char*>(str.c_str());//安全转换//unsigned char*转stringstring str = std::string(char*)ch;
}

(3)string 与 QString

void string2QString()
{//1、QString转换Stringstring s = qstr.toStdString();//2、String转换QStringQString qstr2 = QString::fromStdString(s);
}

(4)string 与 int、double

void int2String()
{//int转stringint num = 123;std::string str = std::to_string(num);//double转stirngdouble d = 3.14159;std::string str = std::to_string(d);/**********************************************************************************///string转intchar str[] = "123";int num = atoi(str);  printf("The integer is %d\n", num);//string转doublechar str[] = "3.14";double num = atof(str);printf("num = %lf\n", num);
}

3、QString 与 int 、double、QString 与 char*

(1)QString 与 int 、double

void int2QString()
{// int转Qstring 、 double转QString//QString::number()这个静态函数,参数可以是int,也可以是double。int num = 123;QString str = QString::number(num);// QString 转 int 、doubleQString str = "123.5";int num = QString::toInt(str);double d = QString::toDouble(str)
}

(2)QString 与 char*

思路:QString 要先转为 string,再由string 转为char*

void char2QString()
{// char* 转 QStringchar* pszData = "hello";std::string str(pszData );QString qstr = QString::fromStdString(str);// QString 转 char *QString qstr = "hello";char* pszData = qstr.toStdString().c_str();
}

三、总结方法:

1、char* 变成string,直接赋值;

2、char[ ]变成别的,直接赋值。

3、char*变const char*容易(直接复制),const char*变char*麻烦。<const_cast><char*>(const char*);

4、char* 作为string 转char[ ]的中转站;

5、string 作为 QString 转 char *的中转站。

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

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

相关文章

重新定义每天进步一点点

日拱一卒&#xff0c;每天进步一点点~ 这个主题之前写过一次&#xff0c;今天看了《全情投入》又有了新的感触&#xff0c;于是将其记录下来。 关于目标的设定问题 目标不是改变自己的日常行动&#xff0c;而是改变进行活动时的思维&#xff01; 有些事情&#xff0c;坚持下…

企业进行媒体宣传的重要性

传媒如春雨&#xff0c;润物细无声&#xff0c;大家好&#xff0c;我是51媒体网胡老师。 媒体邀约&#xff0c;简而言之&#xff0c;是企业或组织主动邀请媒体参与某个事件或活动&#xff0c;如新闻发布会、新产品发布、开业庆典等&#xff0c;目的是希望媒体报道并传播这些消…

CentOS 8 通过YUM方式升级最新内核

CentOS 8 通过YUM方式升级最新内核 查看当前内核 uname -r 4.18.0-193.6.3.el8_2.x86_64导入 ELRepo 仓库的公钥&#xff1a; rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org安装升级内核相关的yum源仓库(安装 ELRepo 仓库的 yum 源) yum install https://www…

远程连接PostgreSQL:配置指南与安全建议

&#x1f337;&#x1f341; 博主猫头虎&#xff08;&#x1f405;&#x1f43e;&#xff09;带您 Go to New World✨&#x1f341; &#x1f405;&#x1f43e;猫头虎建议程序员必备技术栈一览表&#x1f4d6;&#xff1a; &#x1f6e0;️ 全栈技术 Full Stack: &#x1f4da…

use vscode mingw cmake on windows

记住mingw去官网下面的MingW-W64-builds, 下这个版本 x86_64-13.1.0-release-posix-seh-ucrt-rt_v11-rev1.7z posix很重要, win32版本没线程支持,用到会报错 可以测试下是否能正常运行 #include <thread> #include <mutex> #include <condition_variable> …

MFC-GetAdaptersAddresses获取网卡信息

需要:#pragma comment(lib, "IPHLPAPI.lib") GetAdaptersAddresses函数参数说明 ULONG bufferSize = 0;ULONG result = ::GetAdaptersAddresses(AF_UNSPEC, GAA_FLAG_INCLUDE_PREFIX, nullptr, nullptr, &bufferSize);/*参数1:ULONG Family 网络协议族,此参…

Android学习之路(14) Context详解

一. 简介 在 Android 开发中、亦或是面试中都离不开四大组件的身影&#xff0c;而在创建或启动这些组件时&#xff0c;并不能直接通过 new 关键字后跟类名来创建实例对象&#xff0c;而是需要有它们各自的上下文环境&#xff0c;也就是本篇文章要讨论的 Context。 1.1 Contex…

get_views中list的arch格式

1 日历 -> 会议 <tree string"会议" sample"1" multi_edit"1"><header><button name"action_open_composer" type"object" context"{composition_mode:mass_mail}" string"发送邮件"…

无穷级数几个基础知识

问题&#xff1a; 级数敛散性和积分敛散性的区别联系是什么&#xff1f;学习的目的是什么&#xff1f;最重要的目的是什么&#xff1f; 主要内容。 部分和 s ∑ i 1 n u i s \sum_{i1}^{n} u _{i} si1∑n​ui​ 注意&#xff1a;部分和不是数列的一部分之和&#xff0c;…

线性回归方程

性回归是利用数理统计中的回归分析来确定两种或两种以上变数间相互依赖的定量关系的一种统计分析方法&#xff0c;是变量间的相关关系中最重要的一部分&#xff0c;主要考查概率与统计知识&#xff0c;考察学生的阅读能力、数据处理能力及运算能力&#xff0c;题目难度中等&…

华为python面试题目

华为Python常见的面试问题包括: Python是如何被解释的?什么是PEP8?Python是怎样管理内存的?什么是Python装饰器?Python提供哪些内置类型?Python中的异常处理是怎样的?什么是Python的上下文管理器?Python中的列表推导式是什么?Python中的生成器是什么?什么是Python的装…

uniapp 下拉框数据回显的问题

问题 : 现在是下拉框数据回显不了, 绑定的v-model 原因 : uniui 下拉框数据绑定要是 value text 这种格式的 解决办法: 将获取到的后端数据 转换为 需要的格式 ,再进行绑定 下拉框的数据 遍历

Chinese-LLaMA-Alpaca-2模型的测评

训练生成效果评测 Fastchat Chatbot Arena推出了模型在线对战平台&#xff0c;可浏览和评测模型回复质量。对战平台提供了胜率、Elo评分等评测指标&#xff0c;并且可以查看两两模型的对战胜率等结果。生成回复具有随机性&#xff0c;受解码超参、随机种子等因素影响&#xff…

【操作系统】进程的概念、组成、特征

概念组成 程序&#xff1a;静态的放在磁盘&#xff08;外存&#xff09;里的可执行文件&#xff08;代码&#xff09; 作业&#xff1a;代码&#xff0b;数据&#xff0b;申请&#xff08;JCB&#xff09;&#xff08;外存&#xff09; 进程&#xff1a;程序的一次执行过程。 …

电脑磁盘清理怎么做?2个方法,轻松释放内存!

“我电脑里的垃圾文件好像太多了&#xff0c;想给电脑做个全面的磁盘清理&#xff0c;我应该怎么操作呢&#xff1f;” 在计算机的使用中&#xff0c;定期进行电脑磁盘清理是至关重要的。这不仅可以帮助您释放宝贵的磁盘空间&#xff0c;还能提升系统性能和维护电脑的正常运行。…

Redis 核心数据结构理论解析

一、简述 redis是一个开源的使用C语言编写的一个kv存储系统&#xff0c;是一个速度非常快的非关系远程内存数据库。它支持包括String、List、Set、Zset、hash五种数据结构。 除此之外&#xff0c;通过复制、持久化和客户端分片等特性&#xff0c;用户可以很方便地将redis扩展…

Linux(下)

一、 对netstat的补充 1.进程管理 在杀死进程时&#xff0c;不可以杀死其他用户的进程。 查看指定进程时&#xff0c;下图的第二行 是ps -ef | grep tail 命令执行的进程 kill -9 进程号 也可以写作 kill -s 9 进程号 机器人&#xff1a; 2.查看主机状态 将进程的信息分三…

国家信息中心举办“数字政府建设暨数字安全技术”研讨会:海云安提出数字政府软件供应链安全解决方案

近日&#xff0c;由国家信息中心主办&#xff0c;复旦大学研究院承办的“数字政府建设暨数字安全技术研讨会”在义乌顺利召开。国家信息中心信息与网络安全部副主任禄凯&#xff0c;复旦大学党委常委、宣传部部长陈玉刚&#xff0c;义乌市委常委、常务副市长喻新贵为会议致辞。…

Apollo介绍和入门

文章目录 Apollo介绍配置中心介绍apollo介绍主流配置中心功能特性对比 Apollo简介 入门简单的执行流程Apollo具体的执行流程Apollo对象执行流程分步执行流程 核心概念应用&#xff0c;环境&#xff0c;集群&#xff0c;命名空间企业部署方案灰度发布全量发布 配置发布的原理发送…

使用共享 MVI 架构实现高效的 Kotlin Multiplatform Mobile (KMM) 开发

使用共享 MVI 架构实现高效的 Kotlin Multiplatform Mobile (KMM) 开发 文章中探讨了 Google 提供的应用架构指南在多平台上的实现。通过共享视图模型&#xff08;View Models&#xff09;和共享 UI 状态&#xff08;UI States&#xff09;&#xff0c;我们可以专注于在原生端…