如何将vector <char *>转换为vector <string> / string </string> </char *>

时间:2011-08-01 15:32:23

标签: c++ stl vector

我们有一个遗留方法,它返回vector个char指针,即vector<char *>。 现在,我只需要处理字符串(std::string)。我怎么能这样做?

这个问题可能听起来很简单,但我遇到了几个网站,这些网站描述了这些考虑因素可能导致内存泄漏。

现在,我要么得到vector<string>甚至是一个没有任何内存泄漏的字符串。我怎么能这样做?

3 个答案:

答案 0 :(得分:20)

转换非常简单:

std::vector<char*> ugly_vector = get_ugly_vector();
std::vector<std::string> nice_vector(ugly_vector.begin(), ugly_vector.end());

但是,一旦你完成了这项工作,你仍然需要确保ugly_vector中指针所指向的对象被正确销毁。如何执行此操作取决于您正在使用的遗留代码。

答案 1 :(得分:2)

使用std::copy

using namespace std;
vector<char*> v_input;
...
// fill v_input
...
vector<string> v_output;

v_output.resize(v_input.size());
copy(v_input.begin(), v_input.end(), v_output.begin());

答案 2 :(得分:0)

好吧,根据性能要求,您可以根据需要构建std::string。像这样:

for(std::vector<char*>::const_iterator it = v.begin(); it != v.end(); ++it) {
    std::string s = *it;

    // do something with s
}