Ho bisogno di leggere e scrivere dati binari in C++. Uso dalle classi ofstream
e ifstream
ma non posso leggere alcuni caratteri come 9,13,32. Se esiste un altro modo di leggere e scrivere il tema.come posso leggere i dati binari in C++?
risposta
Ecco un programma che fa questo:
#include <iostream>
#include <fstream>
int main(int argc, const char *argv[])
{
if (argc < 2) {
::std::cerr << "Usage: " << argv[0] << "<filename>\n";
return 1;
}
::std::ifstream in(argv[1], ::std::ios::binary);
while (in) {
char c;
in.get(c);
if (in) {
::std::cout << "Read a " << int(c) << "\n";
}
}
return 0;
}
Ecco un esempio che venga eseguito in Linux:
$ echo -ne '\x9\xd\x20\x9\xd\x20\n' >binfile
$ ./readbin binfile
Read a 9
Read a 13
Read a 32
Read a 9
Read a 13
Read a 32
Read a 10
Risoluzione dello spazio dei nomi paranoico! :-) –
@Kerrek SB: Perché, sì, vedere http://stackoverflow.com/questions/1661912/why-does-everybody-use-unanchored-namespace-declarations-ie-std-not-std * grande sorriso * – Omnifarious
Funziona, ma è molto inefficiente se il file è grande. Per prestazioni migliori, utilizzare il metodo Stuard Golodetz. Per prestazioni ancora migliori, usa std :: streambuf. – user763305
Aprire il file utilizzando il flag std::ios::binary
e quindi utilizzare read
e write
anziché gli operatori di streaming.
Ci sono alcuni esempi qui:
per favore spiegane altro. –
@mehdi, ti ha dato documentazione ed esempi. Che cosa vuoi di più? – Beta
Guarda l'esempio nel primo link. Aprirà un file, leggerà il contenuto e inserirà il contenuto in un buffer di caratteri. Il buffer verrà trattato come una matrice di byte essenzialmente. Esattamente di cosa hai bisogno di più spiegazioni? Come gestire il buffer e prendere valori da esso? – rzetterberg
Questo è un esempio di base (senza alcun controllo degli errori!):
// Required STL
#include <fstream>
using namespace std;
// Just a class example
class Data
{
int a;
double b;
};
// Create some variables as examples
Data x;
Data *y = new Data[10];
// Open the file in input/output
fstream myFile("data.bin", ios::in | ios::out | ios::binary);
// Write at the beginning of the binary file
myFile.seekp(0);
myFile.write((char*)&x, sizeof (Data));
...
// Assume that we want read 10 Data since the beginning
// of the binary file:
myFile.seekg(0);
myFile.read((char*)y, sizeof (Data) * 10);
// Remember to close the file
myFile.close();
- 1. Come leggere i dati binari in IE9?
- 2. Leggere dati binari in panda
- 3. Posso leggere correttamente i dati binari tramite XDomainRequest?
- 4. Come interpretare i dati binari in C++?
- 5. Come leggere i dati formattati in C++?
- 6. Scrivi dati binari con Haskell da leggere con C?
- 7. Come leggere i dati binari e il cast in unsigned char (C++)
- 8. Come posso leggere i dati binari dal Registro di sistema per array di byte
- 9. Come leggere e stampare i dati da mysql in C#
- 10. Leggere gli interi binari
- 11. Come leggere i dati dal database SQLite?
- 12. Come leggere i dati da file Excel utilizzando C#
- 13. Come leggere i dati cx_Oracle.LOB in Python?
- 14. Come leggere i dati hdf in Octave
- 15. Come leggere i dati in Tensorflow?
- 16. Utilizzo di dati binari nella stringa C++
- 17. Come posso leggere/caricare immagini in C++?
- 18. Leggi dati binari da Console.In
- 19. modo efficiente per leggere i dati big endian in C#
- 20. Come archiviare i dati binari dalla posta in MongoDB
- 21. Come leggere i dati CSV con codifica sconosciuta in R
- 22. Come leggere i dati da NSDocumentDirectory
- 23. Come faccio a leggere/scrivere file binari?
- 24. Come copiare dati binari in un stringing
- 25. Utilizzando Python, come faccio a leggere/scrivere i dati in memoria come farei con un file?
- 26. Come posso leggere i file Excel in Perl?
- 27. Come leggere i dati da Hbase?
- 28. Scrittura di file binari in C++
- 29. mysqldump gestisce i dati binari in modo affidabile?
- 30. Dati binari POST Python
Si prega di mostrare il proprio codice. Hai impostato 'std :: ifstream :: binary' nel campo della modalità aperta? –
Mostra un frammento di codice, l'output che ti aspetti e l'output che hai ottenuto. –
si prega di consultare http://stackoverflow.com/questions/5355163/writing-binary-data-stdstring-to-an-stdofstream – davka