转换成C风格的char *字符串
来源:互联网 发布:excel数据分栏 编辑:程序博客网 时间:2024/04/28 23:06
转换成C风格的char *字符串
本来今天想写个心情博客,楠哥走了,自习结束了,但是写了半天也没有感觉,还是赶紧写点东西吧。简单的一个:
String类提供了几个成员函数,用于将string类的对象转换成C风格的基于指针的字符串。C++字符串不要求以null结尾。如果某个函数的实参是一个基于指针的字符串,则这些转换函数就可排上用场。
下面的demo演示了将string对象转换成基于指针的字符串
程序声明了一个字符串、一个int值和两个char指针。字符串对象string1被初始化为“STRING”,ptr1被初始化为0,而length被初始化为string1的长度。程序中动态分配的内存,足以容纳一个基于指针的、与string1内容相同的字符串,并将这块内存与char 指针ptr2绑定在一起。
#include <iostream>#include <string>using namespace std;int _tmain(int argc, _TCHAR* argv[]){ string string1("STRINGS"); const char *ptr1 = 0; int length = string1.length(); char *ptr2 = new char[length+1]; string1.copy(ptr2,length,0); //利用string类的copy成员函数,将string1对象复制到ptr2指向的字符数组 ptr2[length] = '\0'; //在数组中加了一个结尾的null字符 cout <<"string string1 is "<< string1 <<"\nstring1 converted to a C-Style string is " <<string1.c_str() <<"\nptr1 is "; //利用c_str函数获得一个const char*指针,它指向一个null结尾的C风格的字符串,与string1内容相同 ptr1 = string1.data();//将const char *指针ptr1赋值为string类的data成员函数返回的指针。这个成员函数返回一个非null结尾的C风格的字符数组 for (int i=0;i<length;i++) { cout<<*(ptr1+i); } cout<<"\nptr2 is "<<ptr2<<endl; //输出ptr2指向的C风格的字符串 delete [] ptr2; system("pause"); return 0;}
运行结果:
参考资料:
《c++程序员教程》 电子工业出版社 张良华 译 P510-511
- 转换成C风格的char *字符串
- C风格的字符串
- c风格的字符串
- C风格的字符串
- c风格的字符串
- C风格字符串和string类型的相互转换
- c风格字符串与c++风格字符串之间转换
- 将c风格的注释转换成cpp风格
- 十六进制字符串、char数组的转换: c c++ java
- C语言自己实现的 整形转换成字符串函数itoa(int Number,char* Str)
- char*数组(c类型字符串)和Vc++中的CString的转换,char*数组等问题
- C语言char*字符串数组和unsigned char[]数组的相互转换
- C语言char*字符串数组和unsigned char[]数组的相互转换
- 十六进制字符串 char 数组 转换 c/c++
- C风格字符串的类型
- C++的字符串: C风格的字符串
- char*数组(c类型字符串)和c++中的string的转换、字符串比较、char*数组等问题
- char*数组(c类型字符串)和c++中的string的转换、字符串比较、char*数组等问题
- 程序员技术练级攻略(转自陈浩博客)
- 实现多文件上传
- Matlab中读取txt文件的几种方法
- Optimizing Program Performance
- c++Primer笔记(12,13,14)
- 转换成C风格的char *字符串
- 太累了
- 表驱动概述<一>
- struts2拦截器实现原理案例分析
- CPS CR Comes
- 一些网址导航
- 程序员职业生涯的三大困境
- 第22章 项目管理介绍1
- 应用程序配置不正确,程序无法启动