c_str是标准的做法,返回的char* 一定指向一个合法的用'\0'终止的C兼容的字符串。 所以,如果需要C兼容的字符串,c_str是标准的做法,data并不保证所有STL的实现的一致性。 你或许会问,c_str()的功能包含data(),那还需要data()函数干什么?看看源码: const charT* c_str () const { if (length () == ...
c_str() 返回一个指向正规C字符串的指针常量,该指针保证指向一个 size() + 1 长度的空间,而且最后一个字符肯定是 \0 ; 而data() 返回的指针则保证指向一个size()长度的空间,不保证有没有null-terminate,可能有,可能没有,看库的实现了。
c_str是标准的做法,返回的char*, 一定指向一个合法的用'\0'终止的C兼容的字符串。 所以,如果需要C兼容的字符串,c_str是标准的做法,data并不保证所有STL的实现的一致性。 你或许会问,c_str()的功能包含data(),那还需要data()函数干什么?看看源码: const charT* c_str () const { if (length () ==...
c++ string c_str() 和data()区别 const char * c_str()const; 获取等效的C字符串 生成一个以空终止的字符序列(c-string),其内容与字符串对象相同,并将其作为指向字符数组的指针返回,且在最后位置有个附加的空终止字符。 const char * data()const;...
const value_type *c_str( ) const; const value_type *data( ) const; data只是返回原始数据序列,没有保证会用traits::eos(),或者说'\0'来作字符串结束. 当然,可能多数实现都这样做了。 c_str是标准的做法,返回的char* 一定指向一个合法的用'\0'终止的C兼容的字符串。 所以,如果需要C兼容的字符...
标准库的string类提供了3个成员函数来从一个string得到c类型的字符数组:c_str()、data()、copy(p,n)。 c_str():生成一个const char*指针,指向以空字符终止的数组。 注: ①这个数组的数据是临时的,当有一个改变这些数据的成员函数被调用后,其中的数据就会失效。因此要么现用先转换,要么把它的数据复制到用...
std::string的⽅法c_str()和data()有什么区别1、从C++标准上的解释来看,只有⼀点区别:c_str() 返回⼀个指向正规C字符串的指针常量,该指针保证指向⼀个 size() + 1 长度的空间,⽽且最后⼀个字符肯定是 \0 ;⽽ data() 返回的指针则保证指向⼀个size()长度的空间,不保证有没有null...
深入探讨C++中std::string类的成员函数c_str()和data()的区别,需要从历史角度出发。在过去,string类设计时并不强制内部存储以'\0'结尾的字符串,这与现代语言的设计趋势相悖。为此,在C++11标准发布之前,仅通过调用string::c_str()函数才能获取到以'\0'结尾的字符串。然而,C++11标准进行了改进...
c++ string c_str() 和data()区别 const char* c_str ( ) const; Get C string equivalent Generates a null-terminated sequence of characters (c-string) with the same content as the string object and returns it as a pointer to an array of characters....
c_str()anddata()perform the same function. (since C++ 11)所以在这之后两个函数效果相同。事实上...