【发布时间】:2014-05-30 15:23:58
【问题描述】:
在c++98中,std::string(c++11 required it is contiguous)的内存可能不是连续存储,那么boost::container::string呢?是不是承诺内存是连续的?
如果它是连续的,它可以更自然地与旧版 api 一起使用。
boost::container::string str("some data\0");
old_api(&str[0]);
不需要再复制到vector中
boost::container::string str("some data\0");
std::vector<char> buffer(str.begin(), str.end());
old_api(&str[0]);
谢谢
【问题讨论】:
-
为什么不使用
c_str()? -
因为遗留的 api 要求 "char*",虽然 const 正确的类型应该是 char const*(可能是因为早期的 c 编译器不支持 const)