什么是std :: safe_string?

时间:2008-10-26 12:50:02

标签: c++ string

answer to one of my questions包含以下代码行:

label = std::safe_string(name); // label is a std::string

意图似乎是字符串文字的包装(因此可能不会发生分配)。我从未听说过safe_string,显然也没有google(我也无法在98标准中找到它)。

有谁知道这是关于什么的?

4 个答案:

答案 0 :(得分:8)

在搜索google code search之后(我本来应该想到这个......)我发现了这个:

//tools-cgi.cpp
string safe_string (const char * s)
{
    return (s != NULL) ? s : "";
}

NULL s转换为零长度字符串。虽然这不是标准的,但它可能是在答案中提到的特定STL实现中的某种扩展。

答案 1 :(得分:6)

没有标准的safe_string。您在回答者的响应中看到的safe_string来自于私有STL扩展实用程序库。

Google for "stlext/stringext.h"您将在另一个论坛的帖子中看到相同的库。

答案 2 :(得分:4)

没有std::safe_string

这样的东西

答案 3 :(得分:0)

它不是C ++标准的一部分(但也许应该是?)

我一直在使用相同类型的帮助函数来避免std :: string使用NULL char * string抛出异常。但它更像是:

// defined somewhere else as ""
extern const char * const g_strEmptyString ;

inline const char * safe_string(const char * p)
{
   return (p) ? (p) : (g_strEmptyString) ;
}

没有开销,并且当我向它提供一个可能为NULL但在特定情况下应该表现为空字符串的char *字符串时std :: string没有崩溃。