Visual c++ 常量迭代器问题

Visual c++ 常量迭代器问题,visual-c++,Visual C++,我以前从未使用过const_迭代器,并且很难调试它。感谢您的帮助。Windows7和VS2010谢谢 typedef std::basic_string <unsigned char> ustring; ustring receivedData(data[i], length); typedef std::map<string, int> MapMime; MapMime mymap; mymap["audio/basic"] = 1; mymap["audio/x-a

我以前从未使用过const_迭代器,并且很难调试它。感谢您的帮助。Windows7和VS2010谢谢

typedef std::basic_string <unsigned char> ustring;
ustring receivedData(data[i], length);
typedef std::map<string, int> MapMime;
MapMime mymap;

mymap["audio/basic"] = 1;
mymap["audio/x-aiff"] = 2;
mymap["audio/x-wav"] = 3;
mymap["video/mpeg"] = 4;
mymap["video/mpeg-2"] = 5;
mymap["video/quicktime"] = 6;

for (MapMime::const_iterator it = mymap.begin(), itEnd = mymap.end();it !=   itEnd.++it);
{
size_t findPosition = receivedData.find(it->first);
if (findPosition != string::npos)
    {
    // Found a match at position findPosition
    }
    else
    {
    // That MIME type was not found in the data...
    }
}
typedef std::basic_字符串ustring;
ustring receivedData(数据[i],长度);
typedef std::map MapMime;
MapMime-mymap;
mymap[“音频/基本”]=1;
mymap[“音频/x-aiff”]=2;
mymap[“音频/x-wav”]=3;
mymap[“视频/mpeg”]=4;
mymap[“视频/mpeg-2”]=5;
mymap[“视频/快速时间”]=6;
for(MapMime::const_迭代器it=mymap.begin(),itEnd=mymap.end();it!=itEnd.+it);
{
size\u t findPosition=receivedData.find(it->first);
if(findPosition!=字符串::npos)
{
//在findPosition位置找到匹配项
}
其他的
{
//在数据中找不到该MIME类型。。。
}
}

如果for循环后面有一个额外的分号,则应将其删除。否则,“it”仅在for循环内定义,该循环为空。

如果for循环后有一个额外的分号,则应将其删除。否则,“it”仅在for循环中定义,该循环为空。

那么,什么对您不起作用?你有一个
而不是分号
在控件表达式中,否则看起来很好。谢谢,这很有帮助。我仍然得到一个错误,即“it”在尺寸行上未定义。还有这个……错误2错误C2227:“->first”的左边必须指向class/struct/union/generic typeSo,什么对您不起作用?你有一个
而不是分号
在控件表达式中,否则看起来很好。谢谢,这很有帮助。我仍然得到一个错误,即“it”在尺寸行上未定义。还有这个…错误2错误C2227:“->first”的左边必须指向class/struct/union/generic类型。。。这两个错误都与
const\u iterator
无关。我删除了它!=伊滕德++查找错误1错误C2664:“unsigned int std::basic_string::find(const std::basic_string&,unsigned int)const”:无法将参数1从“const std::string”转换为“const std::basic_string&”,2智能感知:没有重载函数的实例“std::basic_string::find”[with _Elem=unsigned char,_Traits=std::char _Traits,_Ax=std::allocator]”匹配参数列表众所周知的蠕虫已经被打开!为什么你甚至需要ustring?例如,将receivedData定义为string有什么错?我假设string是std::string的typedef。问题是数据是无符号字符,不是基本字符串的一部分。尝试将数据[I]类型转换为(char*)并使用std::string构造函数。似乎您必须在某个时刻将无符号字符转换为字符……而且这两个错误都与
const\u迭代器
无关。我删除了它!=itEnd;++It)现在我在接收数据上收到一个错误。查找错误1错误C2664:“unsigned int std::basic\u string::find”(const std::basic_string&,unsigned int)const::无法将参数1从“const std::string”转换为“const std::basic_string&”,2 IntelliSense:没有重载函数的实例“std::basic_string::find[with _Elem=unsigned char,_Traits=std::char_Traits,_Ax=std::allocator]”匹配参数列表众所周知的蠕虫已经被打开!为什么你甚至需要ustring?例如,将receivedData定义为string有什么错?我假设string是std::string的typedef。问题是数据是无符号字符,不是基本字符串的一部分。尝试将数据[I]类型转换为(char*)并使用std::string构造函数。似乎您必须在某个时刻将无符号字符转换为字符。