本文转自: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. 编辑修改json文件(PSCustomObject)

    #$uname:用户 #$mails:需要绑定或删除的邮箱,如有多个邮箱,中间以,为分隔符,无需添加引号 #######################脚本开始#################### ...

  2. 一文让你读懂Synchronized底层实现,秒杀面试官

    本文为死磕Synchronized底层实现第三篇文章,内容为轻量级锁实现. 轻量级锁并不复杂,其中很多内容在偏向锁一文中已提及过,与本文内容会有部分重叠. 另外轻量级锁的背景和基本流程在概论中已有讲解 ...

  3. python3测试网站网速

    一.运行环境 1.Windows 10 2.python 3.8 二.安装第三方库pycurl 1.先安装 pip install wheel 2.在安装pycurl https://download ...

  4. Java编程基础——流程控制

    Java编程基础——流程控制 摘要:本文主要介绍Java编程中的流程控制语句. 分类 流程控制指的是在程序运行的过程中控制程序运行走向的方式.主要分为以下三种: 顺序结构:从上到下依次执行每条语句操作 ...

  5. Django+xadmin打造在线教育平台(十一)

    十.首页模块 1.首页展示 (1).视图函数 def index(request): all_banners = BannerInfo.objects.all().order_by('-add_tim ...

  6. annyconnect掉线之后重新链接

    sudo service vpnagentd restart /opt/cisco/anyconnect/bin/vpnui 重启服务+重新登录 deepin的优点之一是它的程序不会安装到各个角落里, ...

  7. dos转unix

    方式一 # yum install dos2unix.x86_64 # dos2unix file 方式二 查看样式: :set ff? //dos/unix 设置: :set fileformat= ...

  8. 【转】合并两个List并去掉重复项

    原文:https://my.oschina.net/jack90john/blog/1493170 工作中很多时候需要用到合并两个List并去除其中的重复内容.这是一个很简单的操作,这里主要是记录一下 ...

  9. The listener supports no services oracle注册监听

    问题登场: [oracle@my-e450 ~]$ lsnrctl status …… The listener supports no servicesThe command completed s ...

  10. [TCP/IP] TCP如何实现流量控制和拥塞控制

    流量控制:数据的传送与接收过程当中很可能出现收方来不及接收的情况,这时就需要对发方进行控制,以免数据丢失.流量控制用于防止在端口阻塞的情况下丢帧,这种方法是当发送或接收缓冲区开始溢出时通过将阻塞信号发 ...