【问题标题】:Pass vector of char vectors to char**将 char 向量的向量传递给 char**
【发布时间】:2015-06-11 07:31:46
【问题描述】:

是否可以将std::vector<std::vector<char>> 传递给函数void doSomething(char** arr),例如存储一堆路径

类似

std::vector<char> vecvoid func(char *str)

vec.assign(64, ' ');

函数调用:func(vec.data());

【问题讨论】:

  • 只有当你转换向量时才不会。

标签: c++ vector stl char


【解决方案1】:

不是直接的,因为向量的向量不会将数组存储到其子数据地址。所以你必须建立这个数组

std::vector<char*> temp(vec.size);
for(unsigned int i=0;i<vec.size();i++) {
    temp[i] = vec[i].data();
}

doSomething(temp.data());

【讨论】:

    【解决方案2】:

    完整示例:

    std::vector<std::vector<char>> vec(16, std::vector<char>(255));
    std::vector<char*> temp(vec.size());
    for(unsigned int i=0;i<vec.size();i++) 
    {
        temp[i] = vec[i].data();
    }
    
    doSomething(temp.data());
    

    谢谢 galinette!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-08-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-05
      • 2022-01-23
      • 2017-10-31
      相关资源
      最近更新 更多