我在设置这张地图时遇到了一些问题。我正在检查“数据”是否与mymap中的字符串匹配。从另一个标题调用的单独标题中的映射。无论如何我都会遇到这些错误。在“mymap”行中,我得到“这个声明没有存储类或类型说明符。在”map“部分,我初始化为'{,,,}'为聚合对象进行了表示。最后在”for“上得到“预计会有一个崩溃”。我正在使用Visual Studio 2010和Windows 7.这是代码......
#include <stdio.h>
#include <iostream>
#include <map>
using namespace std;
void printContent(int)
map <int,string> mymap;
int i;
mymap [1]="audio/basic";
mymap [2]="audio/x-aiff";
mymap [3]="audio/x-wav";
mymap [4]="audio/x-mpeg";
mymap [5]="audio/x-mpeg-2";
for i=0 to map.count-1
{
char s= strstr(data, map[i])
if s != NULL; // you found a match
{
return 1;
}
{
else // keep looping
}
return 0;
}
答案 0 :(得分:1)
这是一个可操作的,可编译的示例,它根据我认为您尝试做的事情做了一些事情。这有帮助吗?
#include <iostream>
#include <map>
#include <string>
template <typename Map, typename Value>
typename Map::const_iterator find_value(const Map& m, const Value& v)
{
for(typename Map::const_iterator it=m.begin(), iend=m.end(); it!=iend; ++it)
{
if(it->second == v) // do whatever test you like here
{
return it;
}
}
return m.end();
}
int main()
{
std::map<int,std::string> mymap;
mymap[1] = "audio/basic";
mymap[2] = "audio/x-aiff";
mymap[3] = "audio/x-wav";
mymap[4] = "audio/x-mpeg";
mymap[5] = "audio/x-mpeg-2";
std::cout << find_value(mymap, "audio/x-aiff")->first << '\n';
return 0;
}
答案 1 :(得分:0)
尝试
void printContent(int)
{
map <int,string> mymap;
int i;
mymap [1]="audio/basic";
mymap [2]="audio/x-aiff";
mymap [3]="audio/x-wav";
mymap [4]="audio/x-mpeg";
mymap [5]="audio/x-mpeg-2";
for(i=0; i < map.count-1; ++i)
{
char s= strstr(data, map[i])
if(s != NULL) // you found a match
{
return 1;
}
else
{
//Do something here
}
}
return 0;
}
答案 2 :(得分:0)
您正在访问没有价值的map
位置。
在for
循环的第一次迭代中,当i
设置为零时,程序将访问map[0]
,而您尚未为其分配任何值。
将值分配给map[0]
或将地图索引更改为map[i+1]
。