私はこの問題にしばらく悩まされてきました。ここにあるのは、ファイル名を含むテキストファイルを読み取るループです。ループはこれらの行を1つずつ読み取り、変数sFileNameを介してメモリに設定します。sFileNameは後で画像をロードするために呼び出され、ループが画像をロードするときにプログラムがこれを1つずつ実行します。次に、ユーザーは画像のタグを選択し、次のタグをロードします。タグと画像ファイル名は、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++;
}
前もって感謝します!