Skip to content

basic_string

cppreference basic_string

std::basic_string<CharT,Traits,Allocator>::basic_string

使用const char *来构造

原文的(5)描述了使用const char *来构造,相关问题如下:

C++ : Exception occurred in script: basic_string::_S_construct NULL not valid

C++报错解决:what(): basic_string::_S_construct null not valid

下面是解决该问题的一个简单的封装:

std::string pchar_to_string(const char * pchar)
{
    if (pchar)
    {
        return std::string(pchar); 
    }
    else
    {
        return "";      
    }

}

Implementation

libstdc++ basic_string.h

basic_string的operator的实现

operator+= modify 对应的object,所以将它们作为member method;

operator+ 需要构造一个新的object,所以没有将它作为member method;

无论是否是member method,它们都是basic_string的interface,关于此,参见gotw What's In a Class? - The Interface Principle