我一直在这个问题上停留了一段时间。我这里有一个循环,它将读取包含文件名的文本文件。循环一一读取这些行,并通过变量 sFileName 将其设置到内存中。稍后调用 sFileName 来加载图像,并且程序在循环加载图像时一一执行此操作。然后用户为图像选择一个标签并加载下一个标签。标记和图像文件名被导出到另一个名为 imgresults.txt 的文本文件中。现在,带有文件名的文本文件有几千行。因此,如果用户必须退出程序并稍后尝试继续,循环会重新开始,而不是在程序关闭时停止。
我正在尝试找到一种方法让循环从那时开始。到目前为止,我决定使用 getline() 来计算 imgresults.txt 中当前有多少行,因为这将给出已经通过程序运行的图像数量。这个数字存储在变量“x”中。我一直在做很多研究,但我只是找不到如何设置 while 循环从行“x”开始的条件。你们有什么建议吗?另外,如果您需要任何澄清,请询问。我只包含有关循环的代码,因为加载图像的代码非常好。
int _tmain(int argc, _TCHAR* argv[])
{
int value = 0;
int nCounter = 0;
FILE* fIn = NULL;
char * sLine = new char[MAX_FILENAME_SIZE];
char * sFileName = new char [MAX_FILENAME_SIZE];
char * s = new char [MAX_FILENAME_SIZE];
#define ImgListFileName "path"
#define ImgRepository "path"
if ((fIn = fopen(ImgListFileName,"rt"))==NULL)
{
printf("Failed to open file: %s\n",ImgListFileName);
return nCounter;
}
ifstream imgresults;
imgresults.open ("imgresults.txt");
int x=0;
string line;
while(!imgresults.eof()) {
getline (imgresults, line);
x++;
}
srand (time(NULL));
cout << x;
while(!feof(fIn)){
memset(sLine,0,MAX_FILENAME_SIZE*sizeof(char));
memset(sFileName,0,MAX_FILENAME_SIZE*sizeof(char));
memset(s,0,MAX_FILENAME_SIZE*sizeof(char));
fgets(sLine,MAX_FILENAME_SIZE,fIn);
strncpy(s,sLine,65);
strcat(sLine,"\0");
strcat(sFileName,s);
printf (sFileName);
nCounter++;
}
提前致谢!