fstream
-
Gleichzeitig (bzw. kurz nacheinander) Schreiben und Lesen aus einer (gepufferten) Datei kann so nicht klappen.
Um Daten wirklich in die Datei zu schreiben, gibt es die Methode flush().string var1,var2="Ein Test mehr nicht"; fstream schreiben; schreiben.open("Test.txt", ios::in | ios::out | ios::trunc); schreiben<<var2; schreiben.flush(); // Daten nun aus dem interne Puffer in die Datei schreiben // schreiben>>var1; // liest nur "Ein" ein getline(f, var1); // liest komplette Zeile cout<<"test:"<<var1<<endl; schreiben.close();Ich weiß aber nicht genau, ob der Lesezeiger nach dem Schreiben am Anfang der Datei steht...
Probiere es einfach mal aus oder aber du öffnest die Datei zuerst schreibend und anschließend nochmals nur lesend.
-
Ehm nein er muss wieder nach vorne seeken
War auch mal dem Irrglauben verfallen ^^
-
wofür steht denn das "f" bei "getline(f, var1);" ??
-
Sorry, meinte natürlich
getline(schreiben, var1); // liest komplette Zeilef sollte einfach die Variable für einen fstream sein...
-
mhh klappt leider immer noch nicht, ich habe das so eingesetzt wie du es geschrieben hast:
#include <iostream> #include <fstream> #include <string> using namespace std; int main() { string var1,var2="Ein Test mehr nicht"; fstream schreiben; schreiben.open("Test.txt", ios::in | ios::out | ios::trunc); schreiben<<var2; schreiben.flush(); getline(schreiben,var1); cout<<"test:"<<var1<<endl; schreiben.close(); system("PAUSE"); return EXIT_SUCCESS; };hilft aber trotzdem nicht...
-
Du mußt möglicherweise noch an den Dateianfang zurückspringen, bevor du etwas einlesen kannst (
schreiben.seekg(0);).
-
#include <iostream> #include <fstream> #include <string> int main() { std::string read_string; const std::string write_string("Ein Test! Mehr nicht?"); std::fstream file_stream("test.txt", std::ios::in | std::ios::out); file_stream << write_string << std::endl; file_stream.seekg(0, std::ios::beg); if (!(std::getline(file_stream, read_string))) { std::cerr << "FEHLER: Konnte Datei nicht lesen!" << std::endl; return 1; } std::cout << "Write: \"" << write_string << "\"\nRead: \"" << read_string << "\"" << std::endl; std::cin.get(); }... und so sollte das gehen

-
Yop das wars
danke an alle ^^
-
Hätte jetzt ne neue frage undzwar kann ich irgendwie die größe meiner "Test.txt" herraus bekommen, ich meine das so das wenn ich x Zeilen hinein geschrieben habe ich auch diese x Zeilen auslesen kann
-
Ehm naja du könntest, um die Zeilenanzahl herauszufinden in dem du einfach folgendes machst:
std::size_t get_line_count(std::ifstream& file_stream) { const std::streampos pos(file_stream.tellg()); std::size_t line_count(0); std::string tmp; while (std::getline(file_stream, tmp)) ++line_count; file_stream.seekg(pos, std::ios::beg); return line_count; }... aber naja kannst auch einfach alles einlesen
std::getline schlägt ja fehl, wenn nix mehr eingelesen werden kann ...