string与char*/char[]的转换

来源:互联网 发布:淘宝网演出服装 编辑:程序博客网 时间:2024/06/01 10:30

string可以被看成是以字符为元素的一种容器。字符构成序列(字符串)。有时候在字符序列中进行遍历,标准的string类提供了STL容器接口。具有一些成员函数比如begin()、end(),迭代器可以根据它们进行定位。string与char*不同的是,string不一定以NULL('\0')结束。string长度可以根据length()得到,string可以根据下标访问。

 char*是字符指针类型。比如:char * pchar;则pchar就是一个指针,是一个指向字符地址的指针。对于char[]而言,可以把数组名当作char*类型来处理,故可以将char[],char*放在一起讨论。输出char类型的指针,实际输出的是从指针指向的地址开始,把连续的每个字节解释为字符输出,直至遇到'\0'为止,而不是根据数组的长度来确定的。

1、string转换为char*


所用到的函数为basic_string::_Copy_s
size_type _Copy_s(value_type *_Dest, //目标字符数组size_type _Dest_size,//_Dest的大小size_type _Count,    //将要复制的字符个数size_type _Off = 0   // 源字符串中复制的开始位置 ) const;//返回值为实际复制的字符个数

测试范例:
#include <iostream>#include <string>using namespace std;int main(){string str1 = "abcdefg";int len = str1.length();char *buffer = new char[len];basic_string<char>::size_type n;n = str1._Copy_s(buffer, len, len);buffer[n] = '\0';cout << buffer << endl;return 0;}



2、char*转换为string

可以直接将C风格字符串赋值给string类型
#include <iostream>#include <string>using namespace std;int main(){char *p = "hijklmn";string str2 = p;cout << str2 << endl;return 0;}









0 0
原创粉丝点击