資源簡介
SRT SSA ASS SMI視頻字幕文件解析程序,C++
支持入口文件:SubtitleParser.cpp

代碼片段和文件信息
//////////////////////////////////////////////////////////////////////////
//
//?smiparse.cpp
//////////////////////////////////////////////////////////////////////////
#include?“stdafx.h“
#include?“smiparser.h“
CSmiParse::CSmiParse()?:?m_langid(0)
{
}
CSmiParse::~CSmiParse()
{
Destroy();
}
BOOL?CSmiParse::HasSmiSubtitle(wchar_t*?strFileName)
{
wchar_t*?p1?=?wcsrchr(strFileName?L‘.‘);
wchar_t?strTmp1[256]?=?{0};
wcsncpy(strTmp1?strFileName?p1?-?strFileName);
wchar_t?smifile[256];
swprintf(smifile?L“%s.smi“?strTmp1);
HANDLE?hFile?=?CreateFileW(smifile?GENERIC_READ?FILE_SHARE_READ?NULL?OPEN_EXISTING?FILE_ATTRIBUTE_NORMAL?NULL);
if(hFile?==?INVALID_HANDLE_VALUE)
{
return?FALSE;
}
BOOL?bRet?=?TRUE;
BYTE*?pBuf?=?new?BYTE[1024];
DWORD?dwRead;
BOOL?bSYNCStart?=?FALSE;
do
{
ReadFile(hFile?pBuf?2?&dwRead?NULL);
if(dwRead?2)
{
bRet?=?FALSE;
break;
}
if(pBuf[0]?==?0xff?&&?pBuf[1]?==?0xfe)
{
m_encoding?=?unicode;
//
ReadFile(hFile?pBuf?16?&dwRead?NULL);
if(dwRead?16)
{
bRet?=?FALSE;
break;
}
wchar_t*?p2?=?(wchar_t*)pBuf;
if(_wcsnicmp(p2?L““?6)?!=?0)
{
bRet?=?FALSE;
break;
}
}
else
{
m_encoding?=?ascii;
//
ReadFile(hFile?pBuf?+?2?6?&dwRead?NULL);
if(dwRead?6)
{
bRet?=?FALSE;
break;
}
char*?p2?=?(char*)pBuf;
if(_strnicmp(p2?““?6)?!=?0)
{
bRet?=?FALSE;
break;
}
}
//////////////////////////////////////////////////////////////////////////
//
subtext*?pSubtext?=?NULL;
subtext::subitem*?si;
while(ReadLine(hFile?pBuf))
{
wchar_t?tmptext[512]?=?{0};
if(m_encoding?==?unicode)
{
wcscpy(tmptext?(wchar_t*)pBuf);
}
else
{
//MultiByteToWideChar(Core_GetDefCodePage()?0?(char*)pBuf?strlen((char*)pBuf)?tmptext?512);
MultiByteToWideChar(CMT_Pub::GetLangCodePage(g_PubSetting.uCurLang)?0?(char*)pBuf?strlen((char*)pBuf)?tmptext?512);
}
wchar_t*?p3?=?(wchar_t*)tmptext;
do
{
int?len?=?wcslen(p3);
//?language?mark
if(p3[0]?==?L‘.‘)
{
LangMark?lm;
//?mark
wchar_t*?mark?=?lm.langid;
mark[0]?=?L‘\0‘;
int?i1?=?1;
for(;?i1? {
if(p3[i1]?!=?L‘?‘)
{
*mark++?=?p3[i1];
}
else
{
*mark++?=?L‘\0‘;
break;
}
}
//?name
wchar_t*?name?=?lm.lang;
name[0]?=?L‘\0‘;
int?i2?=?i1;
for(;?i2? {
if(_wcsnicmp(p3?+?i2?L“Name:“?4)?==?0)
{
int?i3?=?i2?+?5;
for(;?i3? {
if(isalpha(p3[i3]))
{
break;
}
}
int?i4?=?i3;
for(;?i4? {
if(!isalpha(p3[i4]))
{
*name++?=?L‘\0‘;
br
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????2300??2011-09-06?23:01??Subti
?????文件???????1413??2011-09-06?23:01??Subti
?????文件???????8276??2011-09-06?23:01??SmiParser.cpp
?????文件???????1130??2010-12-29?12:08??SmiParser.h
?????文件??????11008??2011-09-06?23:02??SrtParser.cpp
?????文件???????1254??2010-04-08?11:43??SrtParser.h
?????文件??????26128??2011-09-06?23:02??SsaParser.cpp
?????文件???????1288??2010-04-08?11:43??SsaParser.h
?????文件??????24749??2010-04-07?19:02??WxList.cpp
?????文件??????20087??2010-04-07?19:02??WxList.h
-----------?---------??----------?-----??----
????????????????97633????????????????????10
- 上一篇:清華大學 鄭莉 C++程序設計 習題答案詳解
- 下一篇:畫拋物線地C語言
評論
共有 條評論