getline - Wieviele Zeichen wurden gelesen
-
Hallo allerseits,
Ich habe folgendes Problem. Ich will zeilenweise aus einer Texttdatei lesen, was auch so ganz gut klappt, bis auf zwei Kleinigkeiten:
Die erste und letzte Zeile der Datei wird doppelt gelesen und verarbeitet. Bei der zweiten Verarbeitung der letzten Zeile wird zudem auch noch Mist gebaut.
Ich benötige eine Möglichkeit zu testen, wieviele Zeichen gelesen wurde, um eventuelle Leere Zeilen auszuschließen und von der Verarbeitung auszuschließen.Grammar(char* datei) { nullregel=("###"); //markiert später das Ende der Regeln im Grammatikarray init(); ifstream in_file(datei); char szBuf[1024]; while (!in_file.eof()) { in_file.getline(szBuf, 1024); // << "Zeile gelesen" << endl; Rule r(szBuf); //cout << "Regel erschaffen" << endl; fill_grammar(r); //cout << "In Grammatik getan" << "\n"; } };Gibt es eine Möglichkeit, mit der man die Anzahl der gelesenen Zeichen herausfinden kann, und bei 0 einfach in die nächste Zeile springen kann?
Viele Grüße
Wasa
-
Grammar(char* datei) { nullregel=("###"); //markiert später das Ende der Regeln im Grammatikarray init(); ifstream in_file(datei); string buffer; // #include <string> while (getline(in_file, buffer)) { if(buffer.empty()) continue; Rule r(buffer.c_str()); //cout << "Regel erschaffen" << endl; fill_grammar(r); //cout << "In Grammatik getan" << "\n"; } };
-
ungültige Umwandlung von »const char*« in »char*«
ist die Antwort darauf.

Gibt es eine Möglichkeit, die ohne <string> auskommt?
-
Achte auf const-correctness oder nutze gleich durchgängig std::string.
Das ist viel sicherer, einfacher, übersichtlicher und und und.
-
Soweit ich weiß geht const nur, wenn ich nichts verändern will an dem String. Ich will aber etwas daran verändern. In meinem code steht bis jetzt nirgendwo ein const.
Wie bekomme ich den const char*, den er mir ausspuckt, in einen nicht-const char, damit ich ihn weiter verwenden kann?Ich habe ein paar Beschränkungen für das Projekt und muss mir den Großteil selber schreien anstatt wild Standardklassen zu nutzen.
-
strcpy()