Я застрял на этом вопросе на некоторое время. Здесь у меня есть цикл, который будет читать текстовый файл, содержащий имена файлов. Цикл считывает эти строки одну за другой и устанавливает их в память через переменную 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++;
}
Заранее спасибо!
x
в какой-нибудь файл. И если вы собираетесь использовать C++, пожалуйста, откажитесь от массивов символов, memset, strcpy и тому подобного. Вместо этого используйтеstd::string
и стандартные алгоритмы. - person jrok   schedule 08.07.2012