string、const char*、 char* 、char[]相互转换(全)

本文详细介绍了如何在C++中进行string、constchar*、char*和char[]类型的转换,包括初始化、赋值以及各种类型间的转换技巧,如const_cast的使用。

string、const char*、 char* 、char[]四者类型经常会需要转化。

一:转化总结形式如下:

使用时,要对源格式和目标格式进行初始化。源格式赋值为具体的内容,目标格式赋值为空。

源格式        目标格式

string

const char*

char*

char[]

string

NULL

const char*=string.c_str();

const char*=string.c_str();

char*=<const_cast><char*>(const char*);

for(int i=0;i< string.length();i++)

{ char[i]=string[];}

const char*

string =const char*;

NULL

char*=<const_cast><char*>(const char*);

strncpy_s(char,const char*,n);

char*

string =char*;

const char*= char*;

NULL

strncpy_s(char,char*,n);

char[]

string =char;

const char*=char;

char*=char;

NULL

二、总结方法:

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 "stdafx.h"

#include <iostream>

int _tmain(intargc, _TCHAR* argv[])

{

    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 0;

}


②、string转char*

#include "stdafx.h"

#include <iostream>

int _tmain(intargc, _TCHAR* argv[])

{

    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 0;

}

③、string转char[]

#include "stdafx.h"

#include <iostream>

int _tmain(intargc, _TCHAR* argv[])

{

    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\n", str.c_str());         //打印string类型数据 .c_str()

    printf_s("%s\n", arrc);                //打印char[]类型数据

    return 0;

}

2、const char*转为其他类型

①const char*转string

#include "stdafx.h"

#include <iostream>

int _tmain(intargc, _TCHAR* argv[])

{

    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 0;

}

②const char*转char*

#include "stdafx.h"

#include <iostream>

int _tmain(intargc, _TCHAR* argv[])

{

    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 0;

}

③const char*转char[]

#include "stdafx.h"

#include <iostream>

int _tmain(intargc, _TCHAR* argv[])

{

    const char* constc = "Hello World!";     //初始化const char* 类型,并具体赋值

    char arrc[20] = { 0 };                   //初始化char[]类型,并赋值为空

    strncpy_s(arrc,constc,20);              //const char*类型转char[]类型

    printf_s("%s\n", constc);                //打印const char* 类型数据

    printf_s("%s\n", arrc);                  //打印char[]类型数据

    return 0;

}

3、char*转为其他类型

①char*转string

#include "stdafx.h"

#include <iostream>

int _tmain(intargc, _TCHAR* argv[])

{

    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 0;

}

②char*转const char*

#include "stdafx.h"

#include <iostream>

int _tmain(intargc, _TCHAR* argv[])

{

    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 0;

}

③char*转char[]

#include "stdafx.h"

#include <iostream>

int _tmain(intargc, _TCHAR* argv[])

{

    char* c = "HelloWorld!";         //初始化char* 类型,并具体赋值

    char arrc[20] = { 0 };           //初始化char[] 类型,并具体赋值

    strncpy_s(arrc,c,20);             //char*类型转char[] 类型

    printf_s("%s\n", c);              //打印char* 类型数据

    printf_s("%s\n", arrc);           //打印char[]类型数据

    return 0;

}


4、char[]转为其他类型

#include "stdafx.h"

#include <iostream>

int _tmain(intargc, _TCHAR* argv[])

{

    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\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 0;

}


————————————————

                            版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
                        
原文链接:https://blog.csdn.net/rongrongyaofeiqi/article/details/52442169

飞飞影视导航系统简介飞飞影视导航系统FeiFeiCms是一套专为不同需求的站长而设计的视频点播系统,灵活,方便是最大的特色,为初学者快速架设网站首选,只需5分钟即可建立一个海量的视频讯息的行业网站。FeiFeiCms采用PHP MYSQL架构,国内优秀TP的框架为开发基础,其卓越的访问速度和负载能力免去您的后顾之优。本着免费开源的宗旨、将 FeiFeiCms 努力打造成为您身边最贴近的建站程序!不需要庞大的空间与高带宽;一个普通的虚拟空间就可以迅速搭建起一个内容丰富的视频、资讯网站,使你的建站成本低至极点!免费开源,模版分离,动态标签,万条数据,只要会HTML就可以做出属于您的个性化的网站。飞飞影视导航系统特性建站1:内核安稳定(基于ThinkPhp框架开发/PHP MYSQL架构/Jquery类包/超强的负载能力与缓存/UTF8编码)2:安装使用简单(一健安装/一键采集/一键备份/一键切换动静态模式/操作简便/灵活实用)3:影片资源丰富(多播放器/多浏览器支持/百万集片库/24小时不间断更新/一键采集/自定义采集)4:多终端跨平台(windows、Linux均可安装/PC、手机、平板同步观看)5:建站资源丰富(SEO优化模板免费下载/实用插件工具免费下载/完善的教程学习)6:网站管理轻松(支持定时采集/定时生成/做最懒最赚钱的站长)流量1:SEO优化工具篇(百度,谷歌地图/rss订阅/单文件RSS聚合/TAG关键字聚合/专题编辑)2:SEO优化模板篇(标签灵活调用/播放页每集静态标题描述/自定义常用标签/专题匹配/关联词匹配)3:SEO优化路径篇(静态模式/伪静态模式/动态模式/自定义生成路径)4:网站互动守住流量(评分/顶踩/评论/留言/会员等用来提升人气的模块可大幅提搞回头客留住流量)变现流量变现(自定义缓冲广告/内置广告模块/推荐流量互换/推荐广告联盟/友情链接交换)飞飞影视导航系统部份功能展示1: 前台模板自适应(PC、手机、平板自动适应)2:支持二级域名手机模块独立3:图片延迟加载技术4:搜索联想功能5: Tag关键词分词聚合功能6:专题聚合功能7:影片评分功能8:影片分享功能9:影片人气功能10:影片顶踩功能11:影片评论功能(系统自带、有言、畅言)一键切换12:影片剧集分集介绍功能13:影片自定义播放器功能(自带30多种播放器外可扩展)14:影片解析功能(后台一键添加)15:影片版权跳功能16:影片自带24小时不间断更新聚合资源库,第一时间更新17:支持影片频道页聚合18:支持影片列表页展示(可支持ajax无刷新加载)19:支持影片多条件筛选20:支持影片多种排序(人气、评分、上映时间等)21:文章影讯频道功能22:后台一键API采集上万部影片(同时支持火车头自定义免登录采集)23:后台智能添加更改广告24:运行速度快、性能高(支持生成静态网页、支持memcache缓存、文件缓存)25:可定时采集、定时生成(“懒站人”的最佳选择)26:自定义导航菜单27:首页轮播系统28:友情链接管理系统29:数据库备份还原系统30:数据库管理系统31:模板在线管理功能32:前台模板标签自定义数据调用33:海量模板下载34:微信公众号模块35:明星系统36:角色系统37:直播模块飞飞影视导航系统 v4.0.190209更新日志关闭SESSION自动开启,提高系统性能系统增加明星模块功能系统增加角色模块功能增加(预告片、在线观看、下载观看、新闻资讯、经典台词、演员表、影评、评分、看点、上映时间、大结局)增加观看记录精确到集数功能增加dplayer播放器(支持前贴片与暂停广告)增加(排行,最新,地图)等多个内置单页增加明星资源库分享接口增加角色资源库分享接口增加剧情火车头入库接口增加角色火车头入库接口增加明星火车头入库接口更多升级内容请看升级补本说明... 飞飞影视导航系统前台页面飞飞影视导航系统后台管理后台路径:域名/admin.php用户名与密码:admin admin888后台页面相关阅读同类推荐:站长常用源码
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值