C++ 字符串和字符数组
字符串和字符数组之间有什么区别C++ 字符串和字符数组,c++,string,C++,String,字符串和字符数组之间有什么区别 在C++中,字符串的每个元素如何访问?在C中,它们是相同的,字符串是char数组,并且有很多标准方法来处理它们,比如SaveTf、StrCAT、StrcPy、Strup、Strchr、STRSTR……/P> 在C++中,还可以使用STL字符串类,它将提供一个可以以更简单的方式操作的面向对象的字符串。优点是代码更容易阅读,您不需要自己为字符串分配/取消分配内存。string管理自己的内存;对于char数组,情况并非如此,但作为局部变量除外 在这两种情况下,您都可以使
在C++中,字符串的每个元素如何访问?
在C中,它们是相同的,字符串是char数组,并且有很多标准方法来处理它们,比如SaveTf、StrCAT、StrcPy、Strup、Strchr、STRSTR……/P>在C++中,还可以使用STL字符串类,它将提供一个可以以更简单的方式操作的面向对象的字符串。优点是代码更容易阅读,您不需要自己为字符串分配/取消分配内存。
string
管理自己的内存;对于char
数组,情况并非如此,但作为局部变量除外
在这两种情况下,您都可以使用[]
访问单个元素(但对于string,这实际上是操作符[]
)
string
有一个缺点,就是你不容易用C++友好的方式使用C-string。如果有人愿意读这个问题,效率评论可能会引起争议。真的值得投反对票吗?根据我的经验,我看到了性能上的一个重要差异,但我同意对于这样一个基本问题,我可以跳过这个。我在我的帖子中删除了它。@Benoit-不是对我,我没有-1你。没有否决,但仅供参考,STL的现代实现没有性能差异。事实上,一些字符串操作在C++中会更快,因为查询字符串的长度是O(1)操作,而C字符串则是O(n)运算。字符串与char数组不相同。字符数组不限于以特定字符结尾,也不受任何方式的限制\0\0\0\n规则。对于字符数组完全有效。字符数组不是字符串,它只是一个哑字符数组。@Me-Me-Me-Me-Me-Me-Me-Me-Me-Me-Me-Me-Me-Me,去掉它。谢谢。同龄人的压力是变化无常的实际上我更喜欢前面的公式。当然,[]
即使对于C字符串也是一个运算符,但它不是运算符[]
@Konrad-是的,字符串和数组上的[]
之间存在质的区别,这可能超出了本文的范围。我将在这里留下评论,因为它不能直接被否决。@Let_Me_be:胡说八道。对于字符数组
,没有运算符[]
;史蒂夫第一次是对的。显然没有任何研究努力。甚至连这两句话的基本格式都不介意。