QDataStream: Eingelesene Int in Bool konvertieren
-
Hi,
ich habe in der Datei dat.bin die Zahlen 0 bis 19.
Daher gibt die erste Schleife auch 0 bis 19 aus.
Die zweite Schleife gibt nur Nullen aus.#include <QCoreApplication> #include <iostream> #include <QFile> #include <QDataStream> int main(int argc, char *argv[]) { QCoreApplication a(argc, argv); QFile *datei = new QFile("E:/C++/Qt/.../dat.bin"); //Auf Heap wegen QDataStream eingabeStream(datei); datei->open(QIODevice::ReadOnly); QDataStream eingabeStream(datei); std::cout<<"Integer:\n"; //Diese Schleife soll nur der Verständlichkeit dienen for (int schleife = 0; schleife < 20; schleife++) { int temp; eingabeStream >> temp; std::cout << temp << '\n'; } //Es werden die Zahlen 0 bis 19 ausgegeben std::cout<<"Boolean:\n"; for (int schleife = 0; schleife < 20; schleife++) { int temp; eingabeStream >> temp; bool boo = temp; std::cout << boo << '\n'; } //Alle Zahlen sind Null obwohl es nur die erste sein sollte datei->close(); return a.exec(); }
Das ist deshalb nicht logisch weil bei diesem Programm:
#include <iostream> int main() { std::cout<<"Boolean:\n"; for (int schleife = 0; schleife < 20; schleife++) { bool boo = schleife; std::cout << boo << '\n'; } //Nur die erste Zahl ist eine Null return 0; }
nur als erste Zahl Null ausgegeben wird.
Alle anderen Zahlen sind 1.
Das würde ich auch so bei dem ersten Programm erwarten.Was ist hier passiert?
-
Die Datei ist am Ende.
Du hast mit der ersten Schleife alle Daten gelesen.Entweder benutzt du ein
rewind
oder ähnliches oder du schließt die Datei nach der ersten Schleif und öffnest sie wieder vor der zweiten.
-
Vielen Dank!