2016-12-06 106 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)

相關問題