+ -
当前位置:首页 → 问答吧 → string CString中的'\0'存不存在??

string CString中的'\0'存不存在??

时间:2011-12-13

来源:互联网

string 如果存在那么只会有'\0'

CString 如果有。。。

有两个版本:

ansi: '\0'

unicode '\0''\0'

不知道我的说法对不对??

作者: chouxiaoya1114   发布时间: 2011-12-13

string 中有。但是一般不可以访问到那个0.当你用c_str()函数时就可以访问到。


作者: mingliang1212   发布时间: 2011-12-13

都有。

作者: healer_kx   发布时间: 2011-12-13

都没有,因为这些函数自己会控制字符串的长度,也就是可能允许中间有\0的string、CString。
ansi: '\0'
unicode '\0''\0'
这个是C风格字符串的,对于能自我记忆长度的东西是不需要的。
.c_str()只是返回一个C风格字符串的副本。而.data()就不会返回带\0的,这个才是其真正存储的字符数据。

作者: Bokutake   发布时间: 2011-12-13

引用 3 楼 bokutake 的回复:
都没有,因为这些函数自己会控制字符串的长度,也就是可能允许中间有\0的string、CString。
ansi: '\0'
unicode '\0''\0'
这个是C风格字符串的,对于能自我记忆长度的东西是不需要的。
.c_str()只是返回一个C风格字符串的副本。而.data()就不会返回带\0的,这个才是其真正存储的字符数据。



C/C++ code


    const _Elem *c_str() const
        {    // return pointer to null-terminated nonmutable array
        return (_Myptr());
        }

    const _Elem *data() const
        {    // return pointer to nonmutable array
        return (c_str());
        }




VS2010的实现,自己看

作者: mingliang1212   发布时间: 2011-12-13

都有的……

作者: riyueming184   发布时间: 2011-12-13

只有以C风格存储字符串时,才有\0这样的结束符。

作者: Bokutake   发布时间: 2011-12-13