本文转自: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[]相互转换的更多相关文章

  1. string、const char*、 char* 、char[]相互转换(待整理)

    string.const char*. char* .char[]相互转换(全) https://blog.csdn.net/rongrongyaofeiqi/article/details/5244 ...

  2. [转载] C++ string, const char*, char* 之间互相转换

    1, string转const char* 类型 string str = "abcdef"; const char* con_str = string.c_str() 2, co ...

  3. string、const char*、 char* 、char[]相互转换

    转化总结如下: 目标格式 源格式 string const char* char* char[] string NULL const char*=string.c_str(); const char* ...

  4. C++ 字符串、string、char *、char[]、const char*的转换和区别

    1.字符串 字符串本质就是一串字符,在C++中大家想到字符串往往第一反应是std::string(后面简称string) 字符串得从C语言说起,string其实是个类,C语言是没有class的,所以C ...

  5. 【C++】int、const char*、char*、char、string之间的转换

    #include "stdafx.h" #include<string> #include<vector> #include<iostream> ...

  6. string,const char*,char*之间的相互转换

    1. string转const char* string s = "abc"; const char* c_s = s.c_str(); 2. const char*转string ...

  7. const char*、char*、char* const、char[]、string的区别

    1.const char* p: p is a pointer to const char(char const* p 一样)   意思就是不能通过p指针来修改p指向的内容(但是内容可以修改). 2. ...

  8. 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 ...

  9. string,const char*, char*转换之后还是指向同一片内存地址么?

    class Same { public: void reverse(const char* str) { char* A = const_cast<char*>(str); A[] = ' ...

随机推荐

  1. Qt程序app添加图标复制到其它电脑后不显示的解决方法

    原因: 主是要因为Qt显示图标需要依赖一些库来进行转换,而复制到其它电脑后不显示,是没有复制相应的库所致,所以把相应库复制过去就行了. 复制Qt的plugins目录下的imageformats文件到程 ...

  2. DDL创建数据库,表以及约束(极客时间学习笔记)

    DDL DDL是DBMS的核心组件,是SQL的重要组成部分. DDL的正确性和稳定性是整个SQL发型的重要基础. DDL的基础语法及设计工具 DDL的英文是Data Definition Langua ...

  3. Hive的数据倾斜

    目录 什么是数据倾斜 Hadoop框架的特性 主要表现 容易数据倾斜的情况 产生数据清洗的原因 业务场景 空值产生的数据倾斜 不同数据类型关联产生数据倾斜 大小表关联查询产生数据倾斜 一.什么是数据倾 ...

  4. python3调用R语言干货

    R语言知识:https://www.w3cschool.cn/r/r_lists.html 1. 安装库rpy2 1. 下载与本地对应python版本模块,pip install rpy2是安装不上的 ...

  5. React中ref的三种用法 可以用来获取表单中的值 这一种类似document.getXXId的方式

    import React, { Component } from "react" export default class MyInput extends Component { ...

  6. 两种方式实现浅拷贝 for in实现和Object.assign({}, 对象1, 对象2);

    浅拷贝只拷贝对象的一层,如果对象的属性还是对象,那么user3和user4这两个对象对应的值都会发生改变 // 拷贝分为浅拷贝和深拷贝. // 浅拷贝的实现 通过for in实现 var user1 ...

  7. py2,py3区别 ,基础网络常识,多线程,

    1.编译型:把代码编译成机器码,计算机找虚拟机执行代码,机器码交给计算技巧去运行 :C语言,java c# 解释型:边解释边执行 5.只有列表才能reverse 字符串需要索引[::-1] 6.py2 ...

  8. html5 localStorage讲解

    早期的web中使用cookies在客户端保存诸如用户名等简单的信息,但是,在使用cookies存储永久数据存在以下问题. 1.cookies的大小限制在4kB,不适合大量的数据存储. 2.浏览器还限制 ...

  9. 1.python进行if条件相等时候的条件

    在我们进行 if == 判断的时候!其中判断的条件: 1:其值是不是一样 3:其类型是否是一样 ###二者少了任何一个都不可以 >>> pwd = 23>>> cc ...

  10. Java8——Optional

    /* * 一.Optional 容器类:用于尽量避免空指针异常 * Optional.of(T t) : 创建一个 Optional 实例 * Optional.empty() : 创建一个空的 Op ...