将const char **转换为const char *

convert const char ** to const char *

本文关键字:char const 转换      更新时间:2023-10-16

i具有以下代码,可以正常工作。

const char** array = new const char*[_list.size()];
unsigned index = 0;
for (std::list<std::string>::const_iterator it = _list.begin(); it != _list.end(); ++it) {
    array[index] = it->c_str(); 
    index++;
}

我的问题是,如何将const char **转换为const char *。请帮助。

这实际上是一个XY问题。Hameed应该告诉他他解决了什么问题,而不是他要完成的解决问题的哪一步。实际上是什么?将字符串列表转换为C字符串数组?如果是,则应以这种方式进行某种方式(可悲的是,应该复制数据)

char** arr = new char*[_list.size()];
int i = 0;
for(auto it = _list.begin();  it != _list.end(); ++it, +i)
{
   const char *s = it->c_str(); // should not be modified or deleted
   const size_t l = strlen(s);
   arr[i] = new char [l+1];
   std::copy(&s[0],&s[l], &(arr[i][0]));
}

...

您需要从列表中获取i-th元素吗?

auto it = _list.begin(); 
std::advance(it, i);
const char *a = it->c_str();

如果为每个元素进行循环进行操作,请改用它。

串联所有字符串?迭代列表,计算总长度,然后分配该长度的字符阵列,然后一一复制字符串。我有模糊的记忆力,即Boost将其作为算法::已经加入了,但是STL需要长而柔软的代码,无法通过电话设计,无论谁可以编辑答案。以不同的形式使用十二个解决方案呈现在堆栈上:如何将字符串向量插入字符串(优雅的方式)