0

The following is a function that compiles just fine, but when I run it, I get a "Debug Assertion Failed" and it says "list iterator not dereferencable". As far as I can tell the error occurs at whileIter++. I've looked at examples of iterators and how they are used, and can't figure out what I'm doing wrong.

CString findImage(CString fileName, list<record> csvFile)
{
	std::list<record> tmpCsvFile = csvFile;
	std::list<record>::iterator tmpIterator = tmpCsvFile.begin();
	list<record>::iterator whileIter = tmpCsvFile.begin();
fileName = fileName+".txt";
		
		while (whileIter != tmpCsvFile.end())
		{
		      whileIter++;
		if (fileName == (whileIter->fileName).c_str())
			break;
			
		}
		
return whileIter->characters.c_str();
}

Basically there is a list of records ( a struct with a few members, one of which is fileName). The function should compare the fileName in each record of the list, with the fileName that was passed as a parameter to the function in the hope of finding two that are equal.

Thanks in advance

2
Contributors
1
Reply
3
Views
7 Years
Discussion Span
Last Post by Murtan
0

Your problem is inside the while loop.

while (whileIter != tmpCsvFile.end())
		{
		      whileIter++;
		if (fileName == (whileIter->fileName).c_str())
			break;
			
		}

You have advanced the iterator (possibly to the end) before you try to test the filename. Put the fileName test (with the break) before the iterator advancement.

This topic has been dead for over six months. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.