本文介绍了string :: c_str()和string :: data()之间有什么区别?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述 29岁程序员,3月因学历无情被辞! 在< basic_string.h>中,我找到了这两个 函数的实现。但我无法理解它们之间的区别。 请给我一些帮助! // basic_string :: c_str() const _CharT * c_str()const { // MT:这假设并发写入正常。 size_type __n = this-> size(); traits_type :: assign(_M_data()[_ _ n],_ Rep :: _ S_terminal); 返回_M_data() ; } // basic_string :: data() const _CharT * 数据()const {return _M_data(); } 谢谢!In the <basic_string.h>, I find the implementation of these twofunctions. But I can''t understand the difference between them.Please give me some help!//basic_string::c_str()const _CharT*c_str() const{// MT: This assumes concurrent writes are OK.size_type __n = this->size();traits_type::assign(_M_data()[__n], _Rep::_S_terminal);return _M_data();}//basic_string::data()const _CharT*data() const { return _M_data(); }Thanks!推荐答案 C ++标准保证一个是空终止的,另一个是不是(但可能是)。 - Bob Hairgrove 没有********** @ Home.com [snip] C ++标准保证一个是空终止的,另一个是不是(但可能是)。[snip]One is guaranteed by the C++ standard to be null-terminated, the otherisn''t (but might be). 另外,因为std :: string可以包含二进制数据,包括null 字符,data()函数在那些 情况下会更有用。 c_str(),OTOH返回的指针保证以空值终止,并且通常用于处理 文本字符串的遗留代码。 虽然看起来在任何一种情况下都可以使用c_str(),但是根据实现情况, data()可能不会以null结尾。 b $ b - Bob Hairgrove 不** ********@Home.com 这篇关于string :: c_str()和string :: data()之间有什么区别?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持! 上岸,阿里云!
08-30 23:06