Odczyt i zapis binarny C++

Odczyt i zapis binarny C++
0

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

ab

do

char data=[0x97, 0x98]

spartanPAGE
97 != 0x97 !!!!!!!!!! -> 9 == 'a' , 0x97 == '—'
0

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

MarekR22
Moderator C/C++
  • Rejestracja:ponad 17 lat
  • Ostatnio:3 minuty
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.


Jeśli chcesz pomocy, NIE pisz na priva, ale zadaj dobre pytanie na forum.
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ś

Kopiuj
 
#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!

spartanPAGE
  • Rejestracja:około 12 lat
  • Ostatnio:6 dni
0
Kopiuj
#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.

edytowany 1x, ostatnio: spartanPAGE
0

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

spartanPAGE
C++11... Cóż, widać jak bardzo cytuję Znam sporą podstawę o programowaniu w C++; http://ideone.com/RsOVZN, żeby nie być gołosłownym
Shalom
kompiluj to jako nowe c++...
grzesiek51114
grzesiek51114
  • Rejestracja:ponad 11 lat
  • Ostatnio:ponad 4 lata
  • Postów:2442
0

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

Kopiuj
#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 :)

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.