64,662
社区成员
发帖
与我相关
我的任务
分享
#include "stdafx.h"
#include "iostream"
#include "string"
static char const* file_gather[] =
{
".mp3",
".mp4",
".avi",
".mov",
".mpeg",
"null"
};
int _tmain(int argc, _TCHAR* argv[])
{
std::string test_file_path = "c:\\a.avi";
int which = test_file_path.find_last_of(".");
std::string extend_name = test_file_path.substr(which, test_file_path.length());
std::cout << "extend_name value is : " << extend_name << std::endl;
int index = 0;
bool is_can_play_type = false;
while (true)
{
if (!strcmp(file_gather[index], "null"))
{
break;
}
else
{
if (!strcmp(extend_name.c_str(), file_gather[index]))
{
is_can_play_type = !is_can_play_type;
break;
}
}
index++;
}
std::cout << "is_can_play_type value is : " << is_can_play_type << std::endl;
return 0;
}
1. 不管你用什么方法都避免不了字符串的遍历:使用hash也是从char*->int, map,set等用的就是字符串匹配。 鉴于你的媒体类型不会太多,直接用逐个匹配就好了。
2. 通不过编译的问题,稍加修改就好。
#include <cstring>
enum media_type
{
mp3,
mp4,
media_type_cnt
};
#define unkown_type (enum media_type)-1;
enum media_type convert(char const* type);
void play(char const* fn, enum media_type);
int main()
{
enum media_type type = convert("mp3");
play("helloworld.mp3", type);
return 0;
}
//增加新类型是记得更新这个表
static char const* types[] = { "mp3", "mp4" };
enum media_type convert(char const* type)
{
int i = 0;
for (; i < media_type_cnt; ++i)
{
if (strcmp(types[i], type) == 0)
{
return (enum media_type)i;
}
}
return unkown_type;
}
void play(char const* fn, enum media_type type)
{
//...
}
[/quote]
#include <cstring>
enum media_type
{
mp3,
mp4,
media_type_cnt
};
#define unkown_type (enum media_type)-1;
enum media_type convert(char const* type);
void play(char const* fn, enum media_type);
int main()
{
enum media_type type = convert("mp3");
play("helloworld.mp3", type);
return 0;
}
//增加新类型是记得更新这个表
static char const* types[] = { "mp3", "mp4" };
enum media_type convert(char const* type)
{
int i = 0;
for (; i < media_type_cnt; ++i)
{
if (strcmp(types[i], type) == 0)
{
return (enum media_type)i;
}
}
return unkown_type;
}
void play(char const* fn, enum media_type type)
{
//...
}
enum media_type
{
mp3,
mp4,
media_type_cnt
};
#define unkown_type (enum media_type)-1;
enum media_type convert(char const* type);
void play(char const* fn, enum media_type);
int main()
{
enum media_type type = convert("mp3");
play("helloworld.mp3",type);
return 0;
}
//增加新类型是记得更新这个表
static char const* types[] = {"mp3", "mp4"};
enum media_type convert(char const* type)
{
enum media_type i = 0;
for(; i < media_type_cnt; ++i)
{
if(strcmp(types[i], type) == 0)
{
return i;
}
}
return unkown_type;
}
void play(char const* fn, enum media_type type)
{
//...
}
[/quote]
enum media_type
{
mp3,
mp4,
media_type_cnt
};
#define unkown_type (enum media_type)-1;
enum media_type convert(char const* type);
void play(char const* fn, enum media_type);
int main()
{
enum media_type type = convert("mp3");
play("helloworld.mp3",type);
return 0;
}
//增加新类型是记得更新这个表
static char const* types[] = {"mp3", "mp4"};
enum media_type convert(char const* type)
{
enum media_type i = 0;
for(; i < media_type_cnt; ++i)
{
if(strcmp(types[i], type) == 0)
{
return i;
}
}
return unkown_type;
}
void play(char const* fn, enum media_type type)
{
//...
}
[/quote]
哦 行啊,这种用法我第一次看到,学习啦!
enum media_type
{
mp3,
mp4,
media_type_cnt
};
#define unkown_type (enum media_type)-1;
enum media_type convert(char const* type);
void play(char const* fn, enum media_type);
int main()
{
enum media_type type = convert("mp3");
play("helloworld.mp3",type);
return 0;
}
//增加新类型是记得更新这个表
static char const* types[] = {"mp3", "mp4"};
enum media_type convert(char const* type)
{
enum media_type i = 0;
for(; i < media_type_cnt; ++i)
{
if(strcmp(types[i], type) == 0)
{
return i;
}
}
return unkown_type;
}
void play(char const* fn, enum media_type type)
{
//...
}