概述
任何出现字符串字面值的地方都可以用以空字符结束的字符数组来替代:
- 允许使用以空字符结束的字符数组来初始化string对象或为string对象赋值。
- 在string对象的加法运算中允许使用以空字符结束的字符数组作为其中一个运算对象(不能两个运算对象都是);在string对象的复合赋值运算中允许使用以空字符结束的字符数组作为右侧的运算对象。
string s("hello");
上述性质反过来就不成立了:如果程序的某处需要一个C风格字符串,无法直接用string对象来代替它。例如,不能用string对象直接初始化指向字符的指针。为了完成该功能,string专门提供了一个名为c_str的成员函数, 但是无法保证c_str函数返回的数组一直有效,事实上,如果后续的操作改变了string对象的值(指针指向的对象没变,但对象内存中元素的内容发生了改变)就可能让之前返回的数组失去效用。所以,如果执行完c_str()函数后程序想一直都能使用其返回的数组,最好将该数组重新拷贝一份。
string str = "hello";
const char *s = str.c_str();
char *m;
strcpy(m,s);
最后
以上就是心灵美小懒虫为你收集整理的混用string对象与C风格字符串的全部内容,希望文章能够帮你解决混用string对象与C风格字符串所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复