Programmabsturz beim Einlesen aus Datei



  • Hi,

    ich versuche eine csv - Datei einzulesen die wie folgt aufgebaut ist:
    Befehlname,numParameter,TypPara1,TypPara2,....

    Beim Compilieren gibt es nur Wahnungen keine Fehler. Aber die Wahnungen verstehe ich nicht.

    :\programme\microsoft visual studio\myprojects\jobparser\parser\fileanalyzer.cpp(78) : warning C4786: 'std::reverse_iterator<std::basic_stringstream<char,std::char_traits<char>,std::allocator<char> > const *,std::basic_stringstream<char,std::char_t
    raits<char>,std::allocator<char> >,std::basic_stringstream<char,std::char_traits<char>,std::allocator<char> > const &,std::basic_stringstream<char,std::char_traits<char>,std::allocator<char> > const *,int>' : Bezeichner wurde auf '255' Zeichen in de
    n Debug-Informationen reduziert
    c:\programme\microsoft visual studio\myprojects\jobparser\parser\fileanalyzer.cpp(78) : warning C4786: 'std::reverse_iterator<std::basic_stringstream<char,std::char_traits<char>,std::allocator<char> > *,std::basic_stringstream<char,std::char_traits<
    char>,std::allocator<char> >,std::basic_stringstream<char,std::char_traits<char>,std::allocator<char> > &,std::basic_stringstream<char,std::char_traits<char>,std::allocator<char> > *,int>' : Bezeichner wurde auf '255' Zeichen in den Debug-Informatio
    nen reduziert
    c:\programme\microsoft visual studio\myprojects\jobparser\parser\fileanalyzer.cpp(64) : warning C4786: '__ehhandler?analyze@FileAnalyzer@@QAEPAV??analyze@FileAnalyzer@@QAEPAV?vector@V?basic_stringstream@DU?basic\_stringstream@DU?char_traits@D@std@@V?allocator@D@2@@std@@V?allocator@D@2@@std@@V?allocator@V?basic_stringstream@DU?basic\_strin gstream@DU?char_traits@D@std@@V?allocator@D@2@@std@@@2@@std@@V?allocator@D@2@@std@@@2@@std@@V?basic_string@DU?chartraits@D@std@@V?char_traits@D@std@@V?allocator@D@2@@3@D@Z' : Bezeichner wurde auf '255' Zeichen in den Debug-Informationen verkürzt
    c:\programme\microsoft visual studio\myprojects\jobparser\parser\fileanalyzer.cpp(64) : warning C4786: '__unwindfunclet?analyze@FileAnalyzer@@QAEPAV??analyze@FileAnalyzer@@QAEPAV?vector@V?basic_stringstream@DU?basic\_stringstream@DU?char_traits@D@std@@V?allocator@D@2@@std@@V?allocator@D@2@@std@@V?allocator@V?basic_stringstream@DU?basic\_s tringstream@DU?char_traits@D@std@@V?allocator@D@2@@std@@@2@@std@@V?allocator@D@2@@std@@@2@@std@@V?basic_string@DU?chartraits@D@std@@V?char_traits@D@std@@V?allocator@D@2@@3@D@Z$4' : Bezeichner wurde auf '255' Zeichen in den Debug-Informationen verkürzt

    Wenn ich das Programm starte, läuft es ganz normal. Aber sobald ich das Kommando gefunden habe und den 1. Parameter eingelesen habe, stürzt es ab, mit folgender Meldung:
    Debug Assertion Failure.
    File: dbgheap.c Line: 1044
    Exception: _CrtIsValidHeapPointer(pUserData).

    Es handelt sich also um einen Zeigerfehler. Kann aber nichts finden.
    Hier nun der relevante TEil aus meinem Code:

    vector<stringstream>* FileAnalyzer::analyze(string s, char delim){
    	const int SIZE = 255;
    	char line[SIZE];
    	int counter=0;
    	stringstream tmp;
    	std::cout<<"Function analyze: " <<endl;
    
    	//an den Beginn positionieren
    	in.seekg(0L, ios::beg);
    	while(!in.eof() ){
    		std::cout<<"Test!"<<endl;
    		in.getline(line,SIZE, delim);
    		std::cout<<"Just read:  "<<line<<endl;
    
    		//prüfe ob der gelesene Teil dem gesuchten Kommando entspricht
    		if(strcmp( line, s.c_str())== 0){
    			in.getline(line, SIZE, delim);
    			tmp<<line;
    
    			//Counter beinhaltet die Anzahl der Argumente 
    			counter = atoi(line);
    			seperated.push_back(tmp);
    
    			//stringstream leeren und neu einrichten
    			tmp.clear();
    			tmp.str("");
    			while(counter > 0){
    				in.getline(line, SIZE, delim);
    				tmp<<line;
    				std::cout<<"While in analyze!"<<endl;
    				std::cout<<tmp.str()<<endl;
    				seperated.push_back(tmp);
    				tmp.clear();
    				tmp.str("");
    				counter--;
    			}
    			return (&seperated);
    		}
    		//Rest der Zeile will keiner wissen
    		else{
    			in.ignore(10000, '\n');
    		}
    	}
    

    ...

    Hat jemand eine Idee, wo es das Probelm sein könnte?


Anmelden zum Antworten