2010-11-11 94 views
0

可能重複:
Convert std::string to const char* or char*STL地圖和C++

是否有任何要獲取字符串從STL地圖和到一個char陣列背面??

multimap<string, string> testcase; 
testcase.insert(pair<string,string>("DB","something")); 
for(i=testcase.begin(); i!=testcase.end(); ++i){ 
      char cate[20] =(*i).first; 

我的代碼看起來是這樣的... HW可否節省(* I)。第一(或第二對這個問題)到一個字符數組?

+3

複製的[轉換的std :: string爲const char *或字符*](http://stackoverflow.com/questions/347949/convert-stdstring-to-const-char-or-char)(這跟'std :: map'完全沒有關係。 – 2010-11-11 06:16:38

+2

是的,根據James的評論,有一種方法(或者有方法),但是*爲什麼你要填充字符數組?什麼是你試圖解決的真正問題? – Johnsyweb 2010-11-11 06:24:49

回答

3

假設你知道字符串的大小,使用這似乎是你的初衷:

char cate[20]; 
assert(i->first.size() < sizeof(cate)); 
strcpy(i->first.c_str()); 

但是,如果你想利用你想要的字符串的副本:

string cate(i->first); 

或C風格:

char *cate(strdup(i->first.c_str())); 

最後一個 「C」 指針訪問字符串:

char const *cate = i->first.c_str(); 
0

我所要做的就是這個.. strcpy永遠不會打我。謝謝馬特。

char cate[20]; 
char server[30]; 
strcpy(cate,i->first.c_str()); 
strcpy(server,i->first.c_str());