• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >C语言 > 浅析string 与char* char[]之间的转换

浅析string 与char* char[]之间的转换

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-28

通过本文主要向大家介绍了金融资产浅析,浅析办公室管理论文,浅析,浅析是什么意思,土石方量计算方法浅析等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

1、首先必须了解,string可以被看成是以字符为元素的一种容器。字符构成序列(字符串)。有时候在字符序列中进行遍历,标准的string类提供了STL容器接口。具有一些成员函数比如begin()、end(),迭代器可以根据他们进行定位。

注意,与char*不同的是,string不一定以NULL('\0')结束。string长度可以根据length()得到,string可以根据下标访问。所以,不能将string直接赋值给char*。

2、string 转换成 char *

如果要将string直接转换成const char *类型。string有2个函数可以运用。

一个是.c_str(),一个是data成员函数。

例子如下:

string s1 = "abcdeg";
const char *k = s1.c_str();
const char *t = s1.data();
printf("%s%s",k,t);
cout<<k<<t<<endl;

如上,都可以输出。内容是一样的。但是只能转换成const char*,如果去掉const编译不能通过。

那么,如果要转换成char*,可以用string的一个成员函数copy实现。

string s1 = "abcdefg";
char *data;
int len = s1.length();
data = (char *)malloc((len+1)*sizeof(char));
s1.copy(data,len,0);
printf("%s",data);
cout<<data;

3、char *转换成string

可以直接赋值。

string s;

char *p = "adghrtyh";

s = p;

不过这个是会出现问题的。

有一种情况我要说明一下。当我们定义了一个string类型之后,用printf("%s",s1);输出是会出问题的。这是因为“%s”要求后面的对象的首地址。但是string不是这样的一个类型。所以肯定出错。

用cout输出是没有问题的,若一定要printf输出。那么可以这样:
printf("%s",s1.c_str())

4、char[] 转换成string

这个也可以直接赋值。但是也会出现上面的问题。需要同样的处理。

5、string转换成char[]

这个由于我们知道string的长度,可以根据length()函数得到,又可以根据下标直接访问,所以用一个循环就可以赋值了。

这样的转换不可直接赋值。

    string pp = "dagah";
    char p[8];
    int i;
    for( i=0;i<pp.length();i++)
        p[i] = pp[i];
    p[i] = '\0';
    printf("%s\n",p);
    cout<<p;

</div>
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 浅析string 与char* char[]之间的转换
  • 浅析int*p[ ]与int(*p)[ ]的区别
  • 浅析Linux下精确控制时间的函数

相关文章

  • 2017-05-28C语言判断一个数是否是2的幂次方或4的幂次方
  • 2017-05-28C语言中的fscanf()函数与vfscanf()函数使用
  • 2017-05-28C++中4种类型转换方式 cast操作详解
  • 2017-05-28原创的C语言控制台小游戏
  • 2017-05-28探讨数组与字符串输入的问题(C++版)
  • 2017-05-28C语言 数据类型详细介绍
  • 2017-05-28详解C++编程中的重载流插入运算符和流提取运算符
  • 2017-05-28VC++实现程序开机启动运行的方法
  • 2017-05-28C读txt到二维数组的实现方法
  • 2017-05-28c语言实现系统时间校正工具代码分享

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 基于ios中的流状态的定义分析
    • C语言数据结构 双向链表的建立与基本操作
    • 详解state状态模式及在C++设计模式编程中的使用实例
    • 结合C++11的新特性来解析C++中的枚举与联合
    • 随机加密程序的实现方法
    • C语言 数据结构之连续存储数组的算法
    • C++用Dijkstra(迪杰斯特拉)算法求最短路径
    • c语言网络编程-标准步骤(改进版)
    • c++ 类中const成员变量的赋值方法
    • C语言中#define与typedef的互换细节详解

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有