user4424244
user4424244

Reputation:

Read all character including the null byte

I want to read out the chrome history from its file. I want to get all characters and null byte that's in that file. The problem I'm facing is that I only get some part of the text that's in the file. I belive it stop due to a null byte or a speical character.

Here´s my code that I have at the moment.

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

If you want to take a look at the chrome history file its located at:

C:\Users\YOUR NAME\AppData\Local\Google\Chrome\User Data\Default -->History

(PS You have to include hidden files to be able to see Appdata.)

Thanks in advance

Upvotes: 1

Views: 273

Answers (1)

Sam Varshavchik
Sam Varshavchik

Reputation: 118445

std::getline() should be used only to read plain text files.

To read arbitrary binary files you should use read(). Additionally, on your operating system you must open binary files using the std::ios::binary flag.

Upvotes: 1

Related Questions