Hi
C++ kann ja nicht so schwer sein, dachte ich mir...
Ich versuche 2 short ints aus einer Datei in eine Variable einzulesen.
Dies möchte nicht funktionieren, aus mir unerklärlichen Gründen.
Ich verwende den >> Operator
http://www.cplusplus.com/reference/iostream/istream/operator>>/
Die auszulesende Datei fängt so an (Hex)
Mein Code (man achte auf die comments ;))
#include <iostream>
#include <fstream>
using namespace std;
void help() {
cerr << "you need to specify the filename of the cache file!" << endl;
cerr << "$ ./progname filename" << endl << endl;
}
int main(int argc, const char* argv[]) {
if (argc < 2) {
help();
return 0;
}
cout << "cache file: " << argv[1] << endl;
ifstream file;
file.open(argv[1], ios_base::binary | ios_base::in); // ohne openmode probiert... kein unterschied
if (!file || !file.good()) {
cerr << "ERROR: can not read file" << endl;
return 0;
}
// seekg auf 0, beg bringt auch nichts
cout << "get point position: " << file.tellg() << endl; // INFO ist 0
int short dbVersion;
int short dbNumEntries;
file >> dbVersion >> dbNumEntries;
// get pointer (tellg) ist auf -1!!!!!
cout << "Database Version: " << dbVersion << endl;
cout << "Database Entries: " << dbNumEntries << endl;
cout << endl;
}
Alles anzeigen
http://pastebin.com/Spwsju8h (Mit Syntax Highlighting)
Version sollte 1 sein, Entries 5
Ausgegeben wird aber 0 und 0
Nach den >> Operatoren ist der get pointer (tellg) komischerweise auf -1.
Ist nur zu Lernzwecken.
Was ich probiere einzulesen sind location cache files von android.
Das ganze habe ich in Java Problemlos hinbekommen
https://github.com/rrelmy/Locatio…tabase.java#L39
Wie funktioniert das möglichst einfach in C++?