Odczyt i zapis binarny C++

0

Jak odczytać plik i zapisać do postaci binarnej np.

ab

do

char data=[0x97, 0x98]

0

Aha i jeszcze żeby odczytywało i zapisywało znaki \n \t \r

0

jako, że sam opisałeś się jako amator, to może najpierw napisz po co chcesz pisać binarnie?
Z początkującymi często jest tak, że sami sobie niepotrzebnie komplikują życie, brnąc w jakieś dziwne rozwiązania.

0

Znam sporą podstawę o programowaniu w C++

chciałbym żeby wczytać np jakiś plik i zapisać go do char żeby wyglądało min. tak jak pisałem
mam takie coś

 
#include <fstream>
#include <iomanip>

using namespace std;

int main(int argc, char *argv[])
{
   ifstream rfs(argv[1], ios::binary);
   ofstream wfs("data.h");
   wfs<<"unsigned char data[]=""\"";
   
   unsigned char ch;
   for(unsigned i=0; rfs>>ch; ++i)
	{
      if((i)&&(!(i&15))) wfs<<"";
      wfs<<"0x"<<setw(2)<<setfill('0')<<hex<<(unsigned)ch<<",";
    }
   wfs<<"0x00\"\;";
   wfs.close(); rfs.close();
   return 0;
}

Hello World! zapisuje do unsigned char data[]="0x48,0x65,0x6c,0x6c,0x6f,0x57,0x6f,0x72,0x6c,0x64,0x21";
a z tego wychodzi HelloWorld!

0
#include <iostream>
#include <sstream>
#include <string>
using namespace std;

int main() {
	stringstream stream;
	stream << "Hello World!";
	string str;
	getline(stream, str);
	cout << hex;
	for(auto c : str)
		cout << (int) c << " ";
	return 0;
}

Tak swoją drogą za to co próbujesz zrobić powinno się karcić po łapach.

0

To twoje coś nawet nie chce sie skompilować http://prntscr.com/7zog45

0

Może o taki zapis i odczyt binarny Ci chodziło?

#include<iostream>
#include<fstream>
#include<string>
using namespace std;

void zapisz(string napis) {
	size_t dlugosc = napis.length();

	fstream plik("test.bin", ios::out | ios::binary);
	if (plik.is_open()) {
		plik.write((char*)&dlugosc, sizeof(int));
		for (size_t i = 0; i < dlugosc; ++i)
			plik.write((char*)&napis[i], sizeof(char));
		plik.close();
	}
}

string odczytaj() {
	string napis = "";
	int dlugosc = 0;
	char znak = ' ';

	fstream plik("test.bin", ios::in | ios::binary);
	if (plik.is_open()) {
		plik.read((char*)&dlugosc, sizeof(int));
		for (int i = 0; i < dlugosc; ++i) {
			plik.read((char*)&znak, sizeof(char));
			napis.push_back(znak);
		}
		plik.close();
	}
	return napis;
}

int main() {
	string napis = "Hello world!";
	zapisz(napis);
	cout << odczytaj() << endl;
	return 0;
}
0

Tak o to mi chodziło :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1