C++处理char*,char[],string三种类型间的转换
前言
在C和C++中,有一个相当重要的部分,就是字符串的编程描述。在学C的时候,很多人习惯了char[],char*表示法,直到遇见了C++后,出现了第三者:string。这时候,很多初学者就会在这三种字符串表现形式的转换上出现错误,以下是笔者总结的一些最常用的字符串转换方法供大家参考。
代码
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <string.h>
using namespace std;
int main(void)
{
    string str = "HelloWorld";
    char str4[15] = "\0";
    char str5[15] = "\0";
    char str6[15] = "\0";
    char* str1 = (char*)str.data(); //string => char*
    char* str2 = (char*)str.c_str();//string => char*
    string str3 = str1;             //char* => string
    strcpy(str4,str1);              //char* => char[]
    memcpy(str5,str1,strlen(str1));  //char* => char[]
    for(int i=0; i<str.length(); i++) //string => char[]
    {
        str6[i] = str[i];
    }
    string str7 = str4;             //char[] => string
    char* str8 = str4;             //char[] => char*
    cout<<str1<<endl;
    cout<<str2<<endl;
    cout<<str3<<endl;
    cout<<str4<<endl;
    cout<<str5<<endl;
    cout<<str6<<endl;
    cout<<str7<<endl;
    cout<<str8<<endl;
    return 0;
}
												
											C++处理char*,char[],string三种类型间的转换的更多相关文章
- C# enum、int、string三种类型互相转换
		
enum.int.string三种类型之间的互转 #代码: public enum Sex { Man=, Woman= } public static void enumConvert() { in ...
 - [转] java中int,char,string三种类型的相互转换
		
原文地址:http://blog.csdn.net/lisa0220/article/details/6649707 如何将字串 String 转换成整数 int? int i = Integer.v ...
 - java中int,char,string三种类型的相互转换
		
如何将字串 String 转换成整数 int? int i = Integer.valueOf(my_str).intValue(); int i=Integer.parseInt(str); 如何将 ...
 - OpenStack三种类型的NAT转换
		
SNAT SNAT即源网络地址转换,这个NAT路由修改IP包包头中的源IP地址.SNAT功能通常用于让只具有私有IP地址的主机能够访问外网,比如,多个PC使用路由器共享上网,每个PC都配置了内网IP, ...
 - OOM三种类型
		
OOM的三种类型: 堆OOM /** * -Xmx1g -XX:+PrintGCDetails -XX:MaxDirectMemorySize=100m * * @param args */ publ ...
 - spring-cloud-square开发实战(三种类型全覆盖)
		
欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos 本篇概览 前文<五分钟搞懂spring-clou ...
 - 链路层三种类型的MAC地址
		
若需要转载,请注明出处. 我们知道,链路层都是以MAC地址来进行通信双方的地址标识的,如下图:在应用中根据接收方的多寡来进行划分,可分为以下三种: 单播(Unicast) 多播(Multicast) ...
 - matlab for循环的三种类型
		
学习了一半了,发现一个好网站,就是我想写这篇博客用的,网络真是个好东西!纪念下国庆啦 网址:http://www.yiibai.com/matlab/matlab_for_loop.html ---- ...
 - 缓慢变化维 (Slowly Changing Dimension) 常见的三种类型及原型设计(转)
		
开篇介绍 在从 OLTP 业务数据库向 DW 数据仓库抽取数据的过程中,特别是第一次导入之后的每一次增量抽取往往会遇到这样的问题:业务数据库中的一些数据发生了更改,到底要不要将这些变化也反映到数据仓库 ...
 
随机推荐
- 《深入浅出WPF》-刘铁猛学习笔记——XAML
			
XAML是什么? XAML是微软公司创造的一种开发语言,XAML的全称是 Extensible Application Markup Language,即可拓展应用程序标记语言. 它由XML拓展而来, ...
 - 关于python浮点数精度问题计算误差的原因分析
			
在python中使用浮点数运算可能会出现如下问题 a = 0.1+0.2print(a) 输出的结果是 0.30000000000000004 原因如下: 出现上面的情况,主要还是因浮点数在计算机中实 ...
 - golang io操作之写篇
			
/** * @author livalon * @data 2018/9/4 15:11 */ package main import ( "os" "fmt" ...
 - golang 实现两数组对应元素相除
			
func ArrayDivision(arr1 []float64,arr2 []float64) (arr3 []float64) { //两数组对应元素相除 for p:=0;p< len( ...
 - ECMAScript 2017(ES8)新特性简介
			
目录 简介 Async函数 共享内存和原子操作 Object的新方法 String的新方法 逗号可以添加到函数的参数列表后面了 简介 ES8是ECMA协会在2017年6月发行的一个版本,因为是ECMA ...
 - 5、MyBatis教程之ResultMap
			
6.ResultMap 要解决的问题:属性名和字段名不一致 1.查看之前的数据库的字段名 2.Java中的实体类设计 public class User { private int id; //id ...
 - SpringCloud+Nacos实现服务配置中心(Hoxton版本)
			
关于 Nacos Spring Cloud 的详细文档请参看:Nacos Config和Nacos Discovery. 通过 Nacos Server 和 spring-cloud-starter- ...
 - 201871030102_崔红梅 实验三 结对项目—《D{0-1}KP 实例数据集算法实验平台》项目报告
			
项目 内容 课程班级博客链接 班级博客 这个作业要求链接 作业要求 我的课程学习目标 1.体验软件项目开发中的两人合作,练习结对编程2. 掌握Github协作开发程序的操作方法.3.阅读<现代软 ...
 - OO第二单元作业——魔鬼电梯
			
简介 本单元作业分为三次 第一次作业:第一次作业要实现单部简单电梯,停靠所有楼层,无载客容量,性能分考量电梯运行时间. 第二次作业: 第二次作业实现多部电梯,电梯数量由初始化设定,每部电梯都停靠所有楼 ...
 - 2020-BUAA OO-面向对象设计与构造-HW11中对ageVar采用缓存优化的等价性证明(包括溢出情况)
			
HW11中对ageVar采用缓存优化的等价性证明(包括溢出情况) 概要 我们知道,第三次作业里age上限变为2000,而如果缓存年龄的平方和,2000*2000*800 > 2147483647 ...