zoukankan      html  css  js  c++  java
  • 转载: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转为其他类型

    stringconst 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
    ", str.c_str());        //打印string类型数据 .c_str()
    
        printf_s("%s
    ", constc);             //打印const char*类型数据
    
        return 0;
    
    }

    stringchar*

    #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
    ", str.c_str());        //打印string类型数据 .c_str()
    
        printf_s("%s
    ",c);                  //打印char*类型数据
    
        return 0;
    
    }

     

    ③、string转char[]

    #include <iostream>
    
    int main()
    
    {
    
        std::string str = "HelloWorld!";      //初始化string类型,并具体赋值
    
        char arrc[20] = {0};                   //初始化char[]类型,并赋值为空
    
        for (int i = 0; i < str.length(); i++) //string类型转char[]类型
    
        {
    
            arrc[i]=str[i];
    
        }
    
        printf_s("%s
    ", str.c_str());         //打印string类型数据 .c_str()
    
        printf_s("%s
    ", arrc);                //打印char[]类型数据
    
        return 0;
    
    }
    

    2const 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
    ", constc);                //打印const char* 类型数据
    
        printf_s("%s
    ", str.c_str());           //打印string类型数据
    
        return 0;
    
    }

    ②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
    ", constc);                //打印const char* 类型数据
    
        printf_s("%s
    ", c);                     //打印char*类型数据
    
        return 0;
    
    }

    ③const char*char[]

    #include <iostream>
    
    int main()
    
    {
        const char* constc = "Hello World!";     //初始化const char* 类型,并具体赋值
    
        char arrc[20] = { 0 };                   //初始化char[]类型,并赋值为空
    
        strncpy_s(arrc,constc,20);              //const char*类型转char[]类型
    
        printf_s("%s
    ", constc);                //打印const char* 类型数据
    
        printf_s("%s
    ", arrc);                  //打印char[]类型数据
    
        return 0;
    
    }

    3char*转为其他类型

    ①char*转string

    #include <iostream>
    
    int main()
    
    {
    
        char* c = "HelloWorld!";           //初始化char* 类型,并具体赋值
    
        std::string str;                   //初始化string类型
    
        str= c;                            //char*类型转string类型
    
        printf_s("%s
    ", c);                //打印char* 类型数据
    
        printf_s("%s
    ", str.c_str());      //打印string类型数据
    
        return 0;
    
    }

    ②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
    ", c);              //打印char* 类型数据
    
        printf_s("%s
    ", constc);         //打印const char* 类型数据
    
        return 0;
    
    }

    ③char*转char[]

    #include <iostream>
    
    int main()
    
    {
        char* c = "HelloWorld!";         //初始化char* 类型,并具体赋值
    
        char arrc[20] = { 0 };           //初始化char[] 类型,并具体赋值
    
        strncpy_s(arrc,c,20);             //char*类型转char[] 类型
    
        printf_s("%s
    ", c);              //打印char* 类型数据
    
        printf_s("%s
    ", arrc);           //打印char[]类型数据
    
        return 0;
    
    }

    4、char[]转为其他类型

    #include <iostream>
    
    int main()
    
    {
    
        char arrc[20] = "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
    ", arrc);                    //打印char[]类型数据
    
        printf_s("%s
    ", str.c_str());             //打印string类型数据
    
        printf_s("%s
    ", constc);                  //打印const char* 类型数据
    
        printf_s("%s
    ", c);                       //打印char*类型数据
    
        return 0;
    
    }
  • 相关阅读:
    OleDbCommand 的用法
    递归求阶乘
    C#重写窗体的方法
    HDU 5229 ZCC loves strings 博弈
    HDU 5228 ZCC loves straight flush 暴力
    POJ 1330 Nearest Common Ancestors LCA
    HDU 5234 Happy birthday 01背包
    HDU 5233 Gunner II 离散化
    fast-IO
    HDU 5265 pog loves szh II 二分
  • 原文地址:https://www.cnblogs.com/chaofn/p/11545260.html
Copyright © 2011-2022 走看看