转载:string、const char*、 char* 、char[]相互转换
本文转自:https://blog.csdn.net/rongrongyaofeiqi/article/details/52442169
一:转化总结形式如下:
使用时,要对源格式和目标格式进行初始化。源格式赋值为具体的内容,目标格式赋值为空。
二、总结方法:
1、 变成string,直接赋值。
2、 char[]变成别的,直接赋值。
3、 char*变constchar*容易,const char*变char*麻烦。<const_cast><char*>(constchar*);
4、 string变char*要通过const char*中转。
5、 变成char[]。string逐个赋值,char* const char* strncpy_s()。
三、代码实现
1、string转为其他类型
①、string转const char*
- #include <iostream>
- int main()
- {
- std::string str = "HelloWorld!"; //初始化string类型,并具体赋值
- const char* constc = nullptr; //初始化const char*类型,并赋值为空
- constc= str.c_str(); //string类型转const char*类型
- printf_s("%s\n", str.c_str()); //打印string类型数据 .c_str()
- printf_s("%s\n", constc); //打印const char*类型数据
- return ;
- }
②、string转char*
- #include <iostream>
- int main()
- {
- std::string str = "HelloWorld!"; //初始化string类型,并具体赋值
- char* c = nullptr; //初始化char*类型,并赋值为空
- const char* constc = nullptr; //初始化const char*类型,并赋值为空
- constc= str.c_str(); //string类型转const char*类型
- c= const_cast<char*>(constc); //const char*类型转char*类型
- printf_s("%s\n", str.c_str()); //打印string类型数据 .c_str()
- printf_s("%s\n",c); //打印char*类型数据
- return ;
- }
③、string转char[]
- #include <iostream>
- int main()
- {
- std::string str = "HelloWorld!"; //初始化string类型,并具体赋值
- char arrc[] = {}; //初始化char[]类型,并赋值为空
- for (int i = ; i < str.length(); i++) //string类型转char[]类型
- {
- arrc[i]=str[i];
- }
- printf_s("%s\n", str.c_str()); //打印string类型数据 .c_str()
- printf_s("%s\n", arrc); //打印char[]类型数据
- return ;
- }
2、const char*转为其他类型
①const char*转string
- #include <iostream>
- int main()
- {
- const char* constc = "Hello World!"; //初始化const char* 类型,并具体赋值
- std::string str; //初始化string类型
- str= constc; //const char*类型转string类型
- printf_s("%s\n", constc); //打印const char* 类型数据
- printf_s("%s\n", str.c_str()); //打印string类型数据
- return ;
- }
②const char*转char*
- #include <iostream>
- int main()
- {
- const char* constc = "Hello World!"; //初始化const char* 类型,并具体赋值
- char* c = nullptr; //初始化char*类型
- c= const_cast<char*>(constc); //const char*类型转char*类型
- printf_s("%s\n", constc); //打印const char* 类型数据
- printf_s("%s\n", c); //打印char*类型数据
- return ;
- }
③const char*转char[]
- #include <iostream>
- int main()
- {
- const char* constc = "Hello World!"; //初始化const char* 类型,并具体赋值
- char arrc[] = { }; //初始化char[]类型,并赋值为空
- strncpy_s(arrc,constc,); //const char*类型转char[]类型
- printf_s("%s\n", constc); //打印const char* 类型数据
- printf_s("%s\n", arrc); //打印char[]类型数据
- return ;
- }
3、char*转为其他类型
①char*转string
- #include <iostream>
- int main()
- {
- char* c = "HelloWorld!"; //初始化char* 类型,并具体赋值
- std::string str; //初始化string类型
- str= c; //char*类型转string类型
- printf_s("%s\n", c); //打印char* 类型数据
- printf_s("%s\n", str.c_str()); //打印string类型数据
- return ;
- }
②char*转const char*
- #include <iostream>
- int main()
- {
- char* c = "HelloWorld!"; //初始化char* 类型,并具体赋值
- const char* constc = nullptr; //初始化const char* 类型,并具体赋值
- constc= c; //char*类型转const char* 类型
- printf_s("%s\n", c); //打印char* 类型数据
- printf_s("%s\n", constc); //打印const char* 类型数据
- return ;
- }
③char*转char[]
- #include <iostream>
- int main()
- {
- char* c = "HelloWorld!"; //初始化char* 类型,并具体赋值
- char arrc[] = { }; //初始化char[] 类型,并具体赋值
- strncpy_s(arrc,c,); //char*类型转char[] 类型
- printf_s("%s\n", c); //打印char* 类型数据
- printf_s("%s\n", arrc); //打印char[]类型数据
- return ;
- }
4、char[]转为其他类型
- #include <iostream>
- int main()
- {
- char arrc[] = "HelloWorld!"; //初始化char[] 类型,并具体赋值
- std::string str; //初始化string
- const char* constc = nullptr; //初始化const char*
- char*c = nullptr; //初始化char*
- str= arrc; //char[]类型转string类型
- constc= arrc; //char[]类型转const char* 类型
- c= arrc; //char[]类型转char*类型
- printf_s("%s\n", arrc); //打印char[]类型数据
- printf_s("%s\n", str.c_str()); //打印string类型数据
- printf_s("%s\n", constc); //打印const char* 类型数据
- printf_s("%s\n", c); //打印char*类型数据
- return ;
- }
转载:string、const char*、 char* 、char[]相互转换的更多相关文章
- string、const char*、 char* 、char[]相互转换(待整理)
string.const char*. char* .char[]相互转换(全) https://blog.csdn.net/rongrongyaofeiqi/article/details/5244 ...
- [转载] C++ string, const char*, char* 之间互相转换
1, string转const char* 类型 string str = "abcdef"; const char* con_str = string.c_str() 2, co ...
- string、const char*、 char* 、char[]相互转换
转化总结如下: 目标格式 源格式 string const char* char* char[] string NULL const char*=string.c_str(); const char* ...
- C++ 字符串、string、char *、char[]、const char*的转换和区别
1.字符串 字符串本质就是一串字符,在C++中大家想到字符串往往第一反应是std::string(后面简称string) 字符串得从C语言说起,string其实是个类,C语言是没有class的,所以C ...
- 【C++】int、const char*、char*、char、string之间的转换
#include "stdafx.h" #include<string> #include<vector> #include<iostream> ...
- string,const char*,char*之间的相互转换
1. string转const char* string s = "abc"; const char* c_s = s.c_str(); 2. const char*转string ...
- const char*、char*、char* const、char[]、string的区别
1.const char* p: p is a pointer to const char(char const* p 一样) 意思就是不能通过p指针来修改p指向的内容(但是内容可以修改). 2. ...
- How to convert a std::string to const char* or char*?
How to convert a std::string to const char* or char*? 1. If you just want to pass a std::string to a ...
- string,const char*, char*转换之后还是指向同一片内存地址么?
class Same { public: void reverse(const char* str) { char* A = const_cast<char*>(str); A[] = ' ...
随机推荐
- CentOS 6.9安装MySQL 5.6 (使用yum安装)
CentOS 6.9安装MySQL 5.6 (使用yum安装) 移除CentOS默认的mysql-libs [root@test01 srv]# whereis mysqlmysql: /usr/li ...
- pytest-fixture参数化
fixture参数化 指定params属性,实现fixture的参数化,引用该fixture的测试方法将遍历全部参数 import pytest @pytest.fixture(params=[&qu ...
- Docker install in Linux
install command sudo yum install -y yum-utils device-mapper-persistent-data lvm2 sudo yum-config-man ...
- 在vue项目中通过iframe引入jquery项目
最近公司因为原来的jq框架存在的问题太多,所以要进行主题框架的重新搭建,我使用的vue进行的主题框架的重新搭建,但是原来的页面已经完成很多了,而且都是使用的jquery进行开发的 在vue中引入jqu ...
- vue-v-for
1.v-for遍历数组和对象 <ul> <li v-for="item in array">{{item}}</li><br> &l ...
- Phoenix 无法启动报错: java.net.BindException: Address already in use
一.问题描述 i. 登录Ambari发现有一个节点的 Phoenix 无法启动 ii. 在Ambari上点击“Start”,监控 Phoenix 日志文件 iii. Phoenix 日志如下: [ro ...
- postgreSQL 自动递增序号
创建表格 CREATE TABLE test ( id serial, name ) not null ); 查询当前创建好的表格 插入数据 BEGIN TRANSACTION; INSERT INT ...
- OpenStack Train版 简单部署流程
environment 1.网络平面 management(管理网络)→软件安装,组件通信 provider(提供实例网络)→:提供者网络:直接获取ip地址,实例之间直接互通 自服务网络(私有网络 ...
- jmeter压测学习8-压测带token的接口
前言 工作中我们需要压测的接口大部分都是需要先登陆后,带着token的接口(或者带着cookies),我们可以先登陆获取token再关联到下个接口. 比如我现在要压测一个修改用户的个人信息接口,每个用 ...
- 201871010124-王生涛《面向对象程序设计(java)》第十四周学习总结
项目 内容 这个作业属于哪个课程 <任课教师博客主页链接>https://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在哪里 <作业链接地址>http ...