繁体   English   中英

什么是std :: safe_string?

[英]What is std::safe_string?

我的一个问题答案包括以下代码行:

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

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

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

搜索谷歌代码搜索后 (我应该首先想到这个...)我发现了这个:

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

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

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

谷歌的“stlext / stringext.h” ,你会在另一个论坛的帖子中看到相同的库。

没有std::safe_string这样的东西

它不是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的崩溃,但在这种特殊情况下,应该表现为空字符串。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM