Чтение текста из файла в массив без знака - PullRequest
5 голосов
/ 26 июля 2011

Я искал возможность использовать OpenSSL для шифрования текста в файле, и мне нужно, чтобы текст был в массиве без знака, прежде чем я зашифрую его. Как проще всего читать текст из файла в массив без знака?

Ответы [ 3 ]

9 голосов
/ 26 июля 2011

Ваш вопрос помечен как C, так и C ++ (что не конструктивно) . Я дам ответ по C ++.

#include <fstream>
#include <iterator>
#include <vector>

using namespace std;

int main()
{
    ifstream in("filename.txt"); //open file
    in >> noskipws;  //we don't want to skip spaces        
    //initialize a vector with a pair of istream_iterators
    vector<unsigned char> v((istream_iterator<unsigned char>(in)), 
                            (istream_iterator<unsigned char>()));
    ...
}
3 голосов
/ 26 июля 2011

Читайте в любом типе данных по своему вкусу. Приведение к (unsigned char*) гарантированно даст вам доступ к отдельным байтам.

Редактировать: Это ответ для C, а не C ++. Первоначально вопрос тоже был помечен буквой C.

1 голос
/ 26 июля 2011

В сети должно быть множество примеров того, как это сделать.Единственная сложность заключается в том, что вам почти наверняка потребуется динамическое выделение памяти для массива, чтобы гарантировать, что вы не читаете больше входных данных, чем может уместиться в массиве.Кроме того, вам нужно будет провести дополнительные исследования, если вам нужно обработать большие файлы (скажем, несколько ГБ или больше), которые не поместятся в один массив байтов.

...