转换成C风格的char *字符串

 

转换成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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值