answer to one of my questions包含以下代码行:
label = std::safe_string(name); // label is a std::string
意图似乎是字符串文字的包装(因此可能不会发生分配)。我从未听说过safe_string
,显然也没有google(我也无法在98标准中找到它)。
有谁知道这是关于什么的?
答案 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没有崩溃。