关于c++中字符串和字符指针之间的转化

来源:互联网 发布:淘宝用绒里图片 编辑:程序博客网 时间:2024/05/01 18:31

前几天在做网络通信时,遇到一个小问题,里面有一个要把字符串转化为字符指针的需求。
要把字符指针赋值给字符串很简单,直接赋值就可以了。

char *a="abcd";string b=a;///把指针变量a的首地址赋值给了b的首地址

这样做不会出现错误,把指针变量a的首地址赋值给了b的首地址。在c++中,字符串在内存的存储方式就是和字符指针的存储方式一样的。但如果你要复制给一个字符数组就不对了,如

char *a="abcd";char b[5];b=a;

因为b在此处是一个常量,常量是不能被赋值的。
但是如果这样复制却是可以的

char b[5]="abcd";

这相当于对字符数组初始化,这是c语言中字符数组初始化的方式。

在c++字符串类中有一个成员函数c_str(),这个函数可以把字符串转为为字符指针,但是最后转化成的字符指针是const char* 类型的,如果你直接这么赋值会出现错误:
string test_str="abcd";char* a=test_str.c_str();

这是因为两边的类型不匹配。要把字符串转为字符指针代码如下:

///字符串转为字符指针char* str_to_c(string& s){    char *result = &s[0];    for (int i = 1; i < s.length() + 1; i++)    {        *(result + i) = s[i];    }    return result;}

c++中string转int

string str="12345"; int b=atoi(str.c_str());

c++中string转double

string str="123.45"; int b=atof(str.c_str());

将int转化为string

int n;char buffer[4];sprintf_s(buffer, "%d", n);str = buffer;
0 0
原创粉丝点击