Чтение двоичного текста в массив?

У меня есть программа, в которую мне нужно прочитать двоичный текст. Я читаю двоичный текст через перенаправление:

readData будет исполняемым файлом, созданным моим Makefile.

Пример: readData < binaryText.txt

Что я хочу сделать, так это прочитать двоичный текст и сохранить каждый символ в двоичном текстовом файле как символ внутри массива символов. Двоичный текст состоит из 32 Это моя попытка сделать это …

unsigned char * buffer;
char d;
cin.seekg(0, ios::end);
int length = cin.tellg();
cin.seekg(0, ios::beg);
buffer = new unsigned char [length];
while(cin.get(d))
{
cin.read((char*)&buffer, length);
cout << buffer[(int)d] << endl;
}

Тем не менее, я продолжаю получать ошибку сегментации по этому вопросу. Может ли кто-нибудь иметь какие-либо идеи о том, как читать двоичный текст в массив символов? Спасибо!

1

Решение

Я больше программист на C, чем на C ++, но я думаю, что вы должны были начать цикл while

while(cin.get(&d)){
0

Другие решения

Самый простой будет выглядеть так:

std::istringstream iss;
iss << std::cin.rdbuf();

// now use iss.str()

Или все в одну строку:

std::string data(static_cast<std::istringstream&>(std::istringstream() << std::cin.rdbuf()).str());
0

Нечто подобное должно сработать.
Вы извлекаете имя файла из аргументов, а затем читаете весь файл за один раз.

const char *filename = argv[0];
vector<char> buffer;

// open the stream
std::ifstream is(filename);

// determine the file length
is.seekg(0, ios_base::end);
std::size_t size = is.tellg();
is.seekg(0, std::ios_base::beg);

// make sure we have enough memory space
buffer.reserve(size);
buffer.resize(size, 0);

// load the data
is.read((char *) &buffer[0], size);

// close the file
is.close();

Затем вам просто нужно перебрать vector читать символы.

0
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector