我需要循环遍历地图,并将const char数组发送到函数进行打印,我尝试使用字符串cpy但结果是一样的,它不能将const字符串转换为char。我做错了什么?
std::map <std::string, int>::const_iterator end = scores.end();
std::map<std::string, int>::const_iterator it;
for (it = scores.begin(); it != end; ++it)
{
char initials[4];
strcpy(initials,it->first);
//std::string s = "";
DrawString(screen, widthscreen/2 - (14*16)/4, heightscreen/2, initials,charsetsmall, 8);
答案 0 :(得分:3)
您需要使用字符串成员函数 string::c_str
it->first
返回std::string
非基础字符数据。要提取你需要使用上面的成员函数。
您应该使用:
strcpy(initials,it->first.c_str());
答案 1 :(得分:2)
使用std::string
的{{3}}成员。
DrawString(..., it->first.c_str(), ...);
答案 2 :(得分:2)
strcpy(initials,it->first); //error
应该是这样的:
strcpy(initials,it->first.c_str()); //ok
因为first
是std::string
。您需要通过调用const char*
获取std::string
个c_str()
商店。
顺便问一下,你确定字符串的最大大小是4
,包括空字符吗?最好使用strncpy
代替strcpy
:
strncpy(initials,it->first.c_str(), 4); //better
第三个参数是要从源复制到目标的字符数。
答案 3 :(得分:1)
你必须将字符串转换为char。试试
it->first.c_str();
答案 4 :(得分:0)
strcpy(initials,it->first);
将其更改为
strcpy(initials, it->first.c_str());
但这可能会产生一些安全问题。