有没有更好的方法可以将字符串 vector 转换为字符串 vector ,并且字符串之间的终止符为零。
因此,如果我有一个包含以下字符串"test","my","string"
的 vector ,那么我想接收一个chars vector :"test\0my\0string\0"
。
目前,此代码可以正常工作,但是有没有更好(更漂亮)的解决方案?
std::vector<std::string> string_array = {"test", "my", "string"};
std::vector<char> buffer_temp;
for (auto &str : string_array)
{
for (auto &chr : str)
{
buffer_temp.push_back(chr);
}
buffer_temp.push_back('\0');
}
最佳答案
永远不要忘记 std::vector::insert
方法,使用该方法可以将示例简化如下:
std::vector<std::string> string_array = { "test", "my", "string" };
std::vector<char> buffer_temp;
for(auto& s : string_array)
buffer_temp.insert(buffer_temp.end(), s.c_str(), s.c_str() + s.size() + 1);
std::string::c_str
返回一个以null终止的字符数组的指针,因此您不必在'\0'
的每个元素的末尾附加一个额外的string_array
。在下面的评论中,您也可以使用
std::string
迭代器,并且由于std::string
具有随机访问迭代器,因此您可以执行以下操作:for(auto& s : string_array)
buffer_temp.insert(buffer_temp.end(), s.begin(), s.end() + 1);