Seltsame Begebenheit beim auslesen aus Datei
-
Heho hier der code:
#include <iostream> #include <fstream> #include <cctype> using namespace std; ofstream writen; ifstream readn; long Asearch(char* target,short length, ifstream& readn, char* filename) //length is target length without '\0' { bool FOUND = false; short i = 0; long n = 0,temp; readn.open(filename,ios::in); if(!readn.good()) return -2; while(!readn.eof()) { temp = readn.tellg(); while(readn.peek() == target[i]) { if(i == length - 1) { FOUND = true; break; } i++; } i = 0; if(FOUND == true) break; } if(FOUND == false) return -1; n = readn.tellg(); n = n - (length); readn.close(); return n; } int main() { writen.open("test.txt",ios::out); writen << "aaaaaaaaaaaae" << endl; writen.close(); printf("%d lol",Asearch("e",1,readn,"test.txt")); getchar(); return 0; }Geht mir um die FUnktion oben, die eine Zeichenkette in einer Textdatei finden kann(ich weiß noch nicht optimal).
nun folgendes:Lass ich das "temp = readn.tellg();" weg, scheint "readn.peek()" nicht zu funktionieren, was sich dadurch zeigt, dass die position vom getpointer nicht erhöht wird, also EOF nie erreicht wird.
Sobald ich den "temp" teil wieder einfüge, funktioniert das programm/die funktion wieder.
Scheinbar initialisiert tellg irgendwas, oder es gibt ne andere beschaffenheit von peek die ich nicht kenne
hat wer ne ahnung wie das kommt? oo
danke für alle antworten
-
willst du C oder C++ programmieren?
-
c++
auch wenn diverse dinge von C noch drin sind ^^
inwiefern ist das relevant für die frage?
-
peeksoll auch den getpointer nicht erhöhen:
http://www.cplusplus.com/reference/iostream/istream/peek.htmlWas du suchst ist wohl
get:
http://www.cplusplus.com/reference/iostream/istream/get.htmlGrüssli
-
ok danke, aber das würde ja bedeuten dass tellg() den counter erhöht OO
ich mein damit hats funktioniert oO
-
dazu steht in der referenz zwar nichts, aber irgendwie habe ich das gefühl das "tellg()" die position um eins erhöht nachdem die aktuelle position wiedergegeben worden ist. Kann das sein? habe wenn ich das benutze immer seltsame positionserhöhungen