我正在尝试将 a 转换为std::vector<std::string>
以 NULL 结尾的 C 样式字符串数组 ( char *
)。new
是否可以不使用/进行复制malloc
?
基本上,我想在没有 new/malloc 的情况下将 vec 转换回与 arr 完全相同的东西。
#include <string>
#include <vector>
#include <stdio.h>
using namespace std;
void print(const char **strs)
{
const char **ptr = strs;
while(*ptr) {
printf("%s ", *ptr);
++ptr;
}
}
void print(std::vector<std::string> &strs) {
for(auto iter = strs.begin(); iter != strs.end(); ++iter) {
printf("%s ", iter->c_str());
}
}
void main()
{
const char *arr[] = { "a", "b", "c", "d", "e", "f", NULL };
vector<string> vec;
const char **str = arr;
while(*str) {
vec.push_back(*str);
++str;
}
vec.push_back((char *) NULL); //Doesn't work
//print(vec);
print((const char **) &vec[0]);
}