Мне нужно читать и писать двоичные данные в C++. Я использую классы ofstream
и ifstream
, но он не может читать некоторые символы, например 9,13,32. Если есть другой способ читать и писать тему.Как я могу читать двоичные данные в C++?
ответ
Вот это программа, которая делает это:
#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;
}
Вот пример того, что запущен в 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
Разрешение пространства имен Paranoid! :-) –
@ Kerrek SB: Почему, да, см. Http://stackoverflow.com/questions/1661912/why-does-everybody-use-unanchored-namespace-declarations-ie-std-not-std * Большая улыбка * – Omnifarious
Это работает, но очень неэффективно, если файл большой. Для повышения производительности используйте метод Stuard Golodetz. Для повышения производительности используйте std :: streambuf. – user763305
Открыть файл, используя флаг std::ios::binary
, а затем использовать read
и write
, а не потоковые операторы.
Есть некоторые примеры здесь:
поясните пожалуйста. –
@mehdi, он дал вам документацию и примеры. Что вы еще хотите? – Beta
Посмотрите на пример в первой ссылке. Он откроет файл, прочитает содержимое и поместит содержимое в буфер символов. Буфер будет обрабатываться как массив байтов по существу. Что именно вам нужно больше объяснять? Как обрабатывать буфер и принимать значения из него? – rzetterberg
Это базовый пример (без проверки ошибок!):
// 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. Могу ли я читать двоичные данные с istream в C++?
- 2. Как читать двоичные данные, хранящиеся в NSData
- 3. Читать двоичные данные из буфера
- 4. как читать двоичные данные в angularjs
- 5. Как записывать/читать двоичные данные из PostgreSQL?
- 6. Как читать SQL двоичные поля в C#
- 7. C# websocket: как я могу отправить двоичные данные клиенту?
- 8. Читать двоичные данные из таблицы
- 9. Как читать двоичные данные из ответа xhr
- 10. Как я могу читать и писать двоичные файлы в Cascading?
- 11. Как я могу прочитать двоичные данные из wfstream?
- 12. Читать двоичные данные в R эффективно
- 13. Есть ли лучший способ читать сложные двоичные данные в C?
- 14. Spark/pySpark: лучший способ читать двоичные данные
- 15. C#, записывая двоичные данные
- 16. Двоичные данные Vb6-C#
- 17. Как я могу обрабатывать двоичные данные в Frege?
- 18. как я могу установить двоичные данные в полукоксе []
- 19. Как читать двоичные данные в AngularJS в ArrayBuffer?
- 20. Как печатать двоичные данные в C?
- 21. Как интерпретировать двоичные данные в C++?
- 22. Как читать/записывать двоичные файлы?
- 23. Как читать двоичные данные из EF в смарт-карте Scosta?
- 24. Как читать двоичные данные из дочернего процесса Gstreamer в Windows?
- 25. Как читать двоичные данные/изображение из WCF REST
- 26. я не могу читать данные из кувшина
- 27. Двоичные файлы в C++
- 28. Могу ли я вставить двоичные данные в столбец MySQL TEXT?
- 29. Как я получить двоичные данные из imagecreatefromjpeg
- 30. Вставьте двоичные данные в oracle в C#
Пожалуйста, покажите свой код. Установили ли вы 'std :: ifstream :: binary' в поле открытого режима? –
Пожалуйста, покажите фрагмент кода, результат, который вы ожидаете, и полученный результат. –
см. Http://stackoverflow.com/questions/5355163/writing-binary-data-stdstring-to-an-stdofstream – davka