C++中char* 和string的区别是?
char*c;strings;我的理解是,c是一个指针,它指向一串字符的存储空间,但末尾程序不会自动添加'\0'标记。在使用s进行操作的时候,程序会自动帮我们处理s末尾的...
char *c;
string s;
我的理解是,c是一个指针,它指向一串字符的存储空间,但末尾程序不会自动添加'\0'标记。在使用s进行操作的时候,程序会自动帮我们处理s末尾的'\0'。不知道是不是这样?
另外,在使用ifstream.open时,要求传入一个char *变量作为文件名,但直接输入时却用ifstream.open("文件名")这种方式。我不明白,这个双引号里的内容不是字符串string吗?但如果我使用一个string定义的变量代替括号内的部分,又会导致编译不通过。求教,谢谢~ 展开
string s;
我的理解是,c是一个指针,它指向一串字符的存储空间,但末尾程序不会自动添加'\0'标记。在使用s进行操作的时候,程序会自动帮我们处理s末尾的'\0'。不知道是不是这样?
另外,在使用ifstream.open时,要求传入一个char *变量作为文件名,但直接输入时却用ifstream.open("文件名")这种方式。我不明白,这个双引号里的内容不是字符串string吗?但如果我使用一个string定义的变量代替括号内的部分,又会导致编译不通过。求教,谢谢~ 展开
3个回答
展开全部
char * 是传统的基本串类型,带尾0的字符串,要一套专门的处理串的子程序;
string 是面象对象的串对象,封装了许多函数,功能更强;
这两个类型可以互相转换,但这是不同的类型,有的传统老式函数ifstream.open
它的参数类型是char *,你就不能用string.
string 是面象对象的串对象,封装了许多函数,功能更强;
这两个类型可以互相转换,但这是不同的类型,有的传统老式函数ifstream.open
它的参数类型是char *,你就不能用string.
追问
也就是说char*的变量末尾也是自动添'\0'的对吗?在不严格要求的情况下,使用char*和string都是可以的?
追答
char * 是要尾0的。
面向对象用 string方便,但执行效率没有char * 的高。
根据不同的情况灵活运用。
展开全部
s.c_str() 就是将String类的字符串转换成C风格的字符串(即char*) string是STL C++标准模板库对字符操作的封装,安全性可用性都比C风格的好,建议去学习学习
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
char* 是一个数据类型,而string则是一个类
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询