2010-11-11 64 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());