随笔 - 488, 文章 - 0, 评论 - 921, 引用 - 0
数据加载中……

c++ string 和 char * 之间互相转换

char * 可以转string,直接赋值即可。不能单独赋int和c字符类型值。
string s1("demo1");
string s1 = "demo";
char *p = "demo";
s1 = p;

string转char*有三种方式:c_str(),data(),copy()
c_str()返回一个c风格的字符数组,带有'\0'结束
data()返回一个数组,不自动增加‘\0’
copy()拷贝一块字符到新的内存,需要新分配一块内存用于存放。
前两个函数,原有内容发生变化,地址指的内容也会变化,使用copy不会发生这种问题。(见例子3)

const char *p = s.data();
const char * p = s.c_str();

char *p = new char[s.length() + 1];
s.copy(p, string::npos);
p[s.length()] = 0;
用好,释放 p

例子3:
std::string s1 = "demo 123456\n \0";
const char *p1 = s1.c_str();
const char *p2 = s1.data();
s1 = "345";

s1 内容发生变化后,p1和p2指针内容的地址也发生变化。




posted on 2016-08-28 12:26 AlanTop 阅读(122) 评论(0)  编辑 收藏 引用 所属分类: C++


只有注册用户登录后才能发表评论。
【推荐】超50万行VC++源码: 大型组态工控、电力仿真CAD与GIS源码库
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理