2016-12-06 109 views
-5

我有以下代码在其中工作正常。转换常量字符**为常量字符*

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 *。请帮忙。

+0

你不能修改'const'值 – user463035818

+0

*一些错误*现在固定。 – SergeyA

+0

等待,您想将多个字符串的列表转换为单个C字符串? –

回答

-1

这实际上是一个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个元素?

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

如果在每个元素的循环中这样做,只需增加它。

连接所有字符串在一个?遍历列表,计算总长度,然后分配该长度的char数组并逐个复制字符串。我有模糊的记忆,提高得到了这个作为algorithm :: join已经,但stl需要长和褶边的代码,不能在手机上设计,谁可以编辑答案是值得欢迎的。以不同的形式与十几个解决方案,问题呈现在堆栈:How to implode a vector of strings into a string (the elegant way)

相关问题