2016-04-11 9 views
1

Ich möchte den Chrom-Verlauf aus seiner Datei lesen. Ich möchte alle Zeichen und Nullbyte, die in dieser Datei enthalten sind, erhalten. Das Problem, mit dem ich konfrontiert bin, ist, dass ich nur einen Teil des Textes bekomme, der in der Datei enthalten ist. Ich glaube es stoppen wegen eines Nullbytes oder eines speical Charakters.Lesen Sie alle Zeichen einschließlich Nullbyte

Hier ist mein Code, den ich im Moment habe.

#include <iostream> 
#include <fstream> 
#include <string> 
#include <sstream> 

using namespace std; 

int main(){ 

    string str; 
    std::ifstream in("c:/Users/Petrus/Documents/History"); // I have copy my file into my documents to make sure I'm not interfering with Chrome. 
    std::stringstream buffer; 

    if (!in.is_open()){ 
     cout << "Failed to open" << endl; 
    } 
    else{ 
     cout << "Opened OK" << endl; 
    } 

    buffer << in.rdbuf(); 

    std::string contents(buffer.str()); 

    while (getline(buffer, str)) 
    { 
     cout << str; 
    } 
    in.close(); 

    system("PAUSE"); 

    return 0; 
} 

Wenn Sie einen Blick auf die Chrom-Geschichte nehmen Datei seine sich unter:

C: \ Benutzer \ IHR NAME \ AppData \ Local \ Google \ Chrome \ User Data \ Default -> Geschichte

(PS müssen Sie versteckte Dateien enthalten Lage sein Appdata zu sehen.)

Vielen Dank im Voraus

+0

Ich weiß nicht, wie es unter Windows ist, aber auf meinem Linux-System ist die History-Datenbank genau das, eine * Datenbank *, genauer gesagt eine [SQLite] (https://www.sqlite.org/) -Datenbank . Wenn Sie also etwas verarbeiten oder Informationen von ihm abrufen möchten, sollten Sie wahrscheinlich die richtigen Tools (z. B. [SQLite] (https://www.sqlite.org/)) zum Öffnen und Lesen verwenden. –

Antwort

1

std::getline() sollten nur verwendet werden, Klartext zu lesen Dateien.

Um beliebige Binärdateien zu lesen, sollten Sie read() verwenden. Außerdem müssen Sie auf Ihrem Betriebssystem Binärdateien mit dem Flag std::ios::binary öffnen.

Verwandte Themen