从向量中获取char数组的最简单方法是什么?
我正在做的是使用vector begin和end迭代器初始化一个字符串,然后从这个字符串中获取.c_str()。还有其他有效的方法吗?
答案 0 :(得分:68)
Scott Meyers的 Effective STL 对此进行了讨论,您可以&vec[0]
获取std::vector
的第一个元素的地址,并且自标准约束以来有了连续记忆的向量,你可以做这样的事情。
// some function
void doSomething(char *cptr, int n)
{
}
// in your code
std::vector<char> chars;
if (!chars.empty())
{
doSomething(&chars[0], chars.size());
}
编辑:从评论(感谢卡萨布兰卡)
答案 1 :(得分:41)
std::vector<char> chars;
char* char_arr = chars.data(); // &chars[0]