我正在处理一个旧的C风格接口。我有一个函数,其签名如下:
/// if return_value == NULL only the length is returned
void f( char * return_value, size_t * size_only_known_at_runtime);
我的问题是,以下代码是否安全?
std::size required;
f( NULL, &required );
std::string s;
s.resize(required);
f( &s[0], &required );
有没有更好的方法将数据传入字符串中?
< s.size()
,而不是<=
。(虽然在实践中,是的,不确定你如何实现常数时间的c_str()
) - Barrys.data()
,这可能比老式的&s[0]
更易读。 - ComicSansMSconst
的。你可能把它和std::vector
混淆了,后者有一个非const
版本的data()
。 - user703016std::string
。 :D - ComicSansMS