2016-04-11 25 views
1

Dosyadan krom geçmişini okumak istiyorum. Bu dosyadaki tüm karakterleri ve boş baytları almak istiyorum. Karşılaştığım sorun, sadece dosyadaki metnin bir kısmını almamdır. Null byte ya da speical bir karakter yüzünden durduğunu düşünüyorum.Null bayt dahil olmak üzere tüm karakteri okuyun

Şu anda sahip olduğum kodlarım.

#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; 
} 

Eğer krom tarihine dosyası bakmak isterseniz onun bulunan:

C: Kullanıcılar İSMİNİZ \ \ \ AppData \ Local \ Google \ Chrome \ User Data \ Varsayılan -> Tarih

(PS AppData görmeye muktedir gizli dosyaları dahil etmek gerekir.) önceden

Teşekkür

+0

Windows'ta nasıl olduğunu bilmiyorum, fakat Linux sistemimde tarih veritabanı sadece bir veritabanı *, daha kesin olarak bir [SQLite] (https://www.sqlite.org/) veritabanıdır. . Bu yüzden eğer bir işlem yapmak veya bilgi almak istiyorsanız, muhtemelen onu açmak ve okumak için doğru araçları (yani [SQLite] (https://www.sqlite.org/)) kullanmalısınız. –

cevap

1

std::getline() düz metin okumak için yalnızca kullanılmalıdır Dosyalar.

Rasgele ikili dosyaları okumak için read() kullanmalısınız. Ayrıca, işletim sisteminizde, std::ios::binary bayrağını kullanarak ikili dosyaları açmanız gerekir.

İlgili konular