本文整理汇总了C++中StrList::Push方法的典型用法代码示例。如果您正苦于以下问题:C++ StrList::Push方法的具体用法?C++ StrList::Push怎么用?C++ StrList::Push使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类StrList
的用法示例。
在下文中一共展示了StrList::Push方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: FindPartsInFile
static void FindPartsInFile(TagFileInfo* fi,const char* str,StrList& dst)
{
FILE *f=fopen(fi->filename,"rt");
if(!f)return;
struct stat st;
fstat(fileno(f),&st);
String name,base=fi->filename;
int ri=base.RIndex("\\");
if(ri!=-1)
{
base.Delete(ri+1);
}
if(fi->modtm!=st.st_mtime)
{
Load(fi->filename,base);
}
int len=strlen(str);
int pos;
int left=0;
int right=fi->offsets.Count()-1;
int cmp;
while(left<=right)
{
pos=(right+left)/2;
fseek(f,fi->offsets[pos],SEEK_SET);
fgets(strbuf,sizeof(strbuf),f);
cmp=strncmp(str,strbuf,len);
if(!cmp)
{
break;
}else if(cmp<=0)
{
right=pos-1;
}else
{
left=pos+1;
}
}
if(!cmp)
{
int endpos=pos;
while(pos>0)
{
fseek(f,fi->offsets[pos-1],SEEK_SET);
fgets(strbuf,sizeof(strbuf),f);
if(!strncmp(str,strbuf,len))
{
pos--;
}else
{
break;
}
}
while(endpos<fi->offsets.Count()-1)
{
fseek(f,fi->offsets[endpos+1],SEEK_SET);
fgets(strbuf,sizeof(strbuf),f);
if(!strncmp(str,strbuf,len))
{
endpos++;
}else
{
break;
}
}
for(int i=pos;i<=endpos;i++)
{
fseek(f,fi->offsets[i],SEEK_SET);
fgets(strbuf,sizeof(strbuf),f);
char *tab=strchr(strbuf,'\t');
if(tab)
{
*tab=0;
dst.Push(strbuf);
}
}
}
fclose(f);
}