String中c_str()、data()、copy(p,n)函数的用法
来源:互联网 发布:在乎山水之间的乎 编辑:程序博客网 时间:2024/05/18 13:26
转载自;http://blog.csdn.net/u010781856/article/details/46593625
string.c_str是Borland封装的String类中的一个函数,它返回当前字符串的首字符地址。c_str函数的返回值是const char*的,不能直接赋值给char*,所以就需要我们进行相应的操作转化,下面就是这一转化过程。
c++语言提供了两种字符串实现,其中较原始的一种只是字符串的c语言实现。与C语言的其他部分一样,它在c++的所有实现中可用,我们将这种实现提供的字符串对象,归为c-串,每个c-串char*类型的。
标准头文件<cstring>包含操作c-串的函数库。这些库函数表达了我们希望使用的几乎每种字符串操作。 当调用库函数,客户程序提供的是string类型参数,而库函数内部实现用的是c-串,因此需要将string对象,转化为char*对象,而c_str()提供了这样一种方法,它返回const char*类型(可读不可改)的指向字符数组的指针。
函数声明:const char *c_str();
c_str()函数返回一个指向正规C字符串的指针, 内容与本string串相同.
这是为了与c语言兼容,在c语言中没有string类型,故必须通过string类对象的成员函数c_str()把string 对象转换成c中的字符串样式。
注意:一定要使用strcpy()函数 等来操作方法c_str()返回的指针
比如:最好不要这样:
char* c;
string s="1234";
c = s.c_str();
//c最后指向的内容是垃圾,因为s对象被析构,其内容被处理(纠正:s对象的析构是在对指针c完成赋值操作之后进行的,故此处并没有错误)
在vc++2010中提示的错误原因:
应该这样用:
char c[20];
string s="1234";
strcpy(c,s.c_str());
这样才不会出错,c_str()返回的是一个临时指针,不能对其进行操作
c_str()返回的是一个分配给const char*的地址,其内容已设定为不可变更,如果再把此地址赋给一个可以变更内容的char*变量,就会产生冲突,在2010中是不被允许的。但是如果放入函数调用,或者直接输出,因为这些函数和输出都是把字符串指针作为 const char*引用的,所以不会有问题。
例(2)
c_str() 以const char* 类型返回 string 内含的字符串
如果一个函数要求char*参数,可以使用c_str()方法:
string s = "Hello World!";
printf("%s", s.c_str()); //输出 "Hello World!"
c_str在打开文件时的用处:
当需要打开一个由用户自己输入文件名的文件时,可以这样写:ifstream in(st.c_str());。其中st是string类型,存放的即为用户输入的文件名。
0 0
- string中c_str()、data()、copy(p,n)函数的用法
- string中c_str()、data()、copy(p,n)函数的用法
- string中c_str()、data()、copy(p,n)函数的用法
- string中c_str()、data()、copy(p,n)函数的用法
- string中c_str()、data()、copy(p,n)函数的用法
- string中c_str()、data()、copy(p,n)函数的用法
- string中c_str()、data()、copy(p,n)函数的用法
- string中c_str()、data()、copy(p,n)函数的用法
- string中c_str()、data()、copy(p,n)函数的用法
- string中c_str()、data()、copy(p,n)函数的用法
- string中c_str()、data()、copy(p,n)函数的用法
- string中c_str()、data()、copy(p,n)函数的用法
- string中c_str()、data()、copy(p,n)函数的用法
- string中c_str()、data()、copy(p,n)函数的用法
- string中c_str()、data()、copy(p,n)函数的用法
- string中c_str()、data()、copy(p,n)函数的用法
- string中c_str()、data()、copy(p,n)函数的用法
- string中c_str()、data()、copy(p,n)函数的用法
- RxJava操作符
- Modbus设备调试工具Winform(包括SRC0001、海康威视、TTS以及各种类型LED的测试)
- modCount
- 理解 Python 语言中的 defaultdict
- 资源链接网址
- String中c_str()、data()、copy(p,n)函数的用法
- 网卡驱动-设置组播mac地址
- 文章标题
- 需要学习的新东西记录
- CodeForces 641 C.Little Artem and Dance(水~)
- 获取sql serverl数据库第10到20条数据
- ES6 let和const详解及使用细节
- 07_数据绑定
- PTA——宿舍谁最高
原创粉丝点击
热门IT博客
热门问题
老师的惩罚
人脸识别
我在镇武司摸鱼那些年
重生之率土为王
我在大康的咸鱼生活
盘龙之生命进化
天生仙种
凡人之先天五行
春回大明朝
姑娘不必设防,我是瞎子
云南招生工作网
云南文明网
云南人力资源和社会保障网
云南人力资源社会保障网
云南艺术学院教务网
云南采购网
云南传统教育网
云南人力资源网
中国志愿网云南站
云南纪检监察网
云南卫生人才网
云南糖网
云南志愿者网注册登录入口
云南公务员考试网
云南电网公司
云南招考网成绩查询
云南考试网
云南省人事考试信息网
云南大学研究生招生信息网
云南省招生考试工作网登录
云南省招生工作网登录网
云南省事业单位招聘网
云南白糖网
云南建筑业市场监管信息网
云南考试招生网
云南省建筑市场服务信息网
云南监察网
云南招生考试网
云南大学就业信息网
云南司法行政网
云南公安网
云南省卫生人才网
云南省医药有限公司客户网
云南大学研究生招生网
云南省招生网登录
云南考试网中心
云南招标网
云南奇石网
云南论坛网
中国志愿服务网云南站
中国志愿服务网云南站登录