Здравствуйте, Аноним, Вы писали:
А>Есть вектор(std::vector<BYTE>) байт, как его быстро записать в файл
вот так в бинарном виде:
std::vector<BYTE> arr;
std::ofstream f("qqq.txt");
if (f)
{
f.write( (const char*)&arr[0], arr.size()*sizeof(BYTE));
}
вот так в текстовом:
std::vector<BYTE> arr;
std::ofstream f("qqq.txt");
if (f)
{
std::copy(arr.begin(), arr.end(), std::ostream_iterator<unsigned>(f, " "));
}
Здравствуйте, Аноним, Вы писали:
А>Есть вектор(std::vector<BYTE>) байт, как его быстро записать в файл
std::vector<char> arr;
arr.push_back('0');
arr.push_back('1');
arr.push_back('2');
std::ofstream fout("c:\\test\\vec.dat", std::ios::out | std::ios::binary);
size_t sz = arr.size();
fout.write(reinterpret_cast<char*>(&sz), sizeof(size_t));
fout.write(&arr[0], sz*sizeof(arr[0]));
fout.close();
arr.clear();
sz = 0;
std::ifstream fin("c:\\test\\vec.dat", std::ios::in | std::ios::binary);
fin.read(reinterpret_cast<char*>(&sz), sizeof(size_t));
arr.resize(sz);
fin.read(&arr[0], sz*sizeof(arr[0]));
korzhik wrote:
> Здравствуйте, Аноним, Вы писали:
>
> А>Есть вектор(std::vector<BYTE>) байт, как его быстро записать в файл
>
> вот так в бинарном виде:
> > std::vector<BYTE> arr;
> std::ofstream f("qqq.txt");
>
> if (f)
> {
> f.write( (const char*)&arr[0], arr.size()*sizeof(BYTE));
> }
>
Это не в бинарном виде — на мелкософте write() тебе назаменяет '\n' на "\r\n", если не открыл файл с флагом binary.
--
Maxim YegorushkinPosted via RSDN NNTP Server 1.9 gamma
wrote:
> Есть вектор(std::vector<BYTE>) байт, как его быстро записать в файл
Реально самый быстрый способ записать что-либо в файл — использовать неблокирующий или асинхронный вывод. Это не так просто как вызов write(), но действительно быстро.
Ищи в PSDK "Synchronous and Asynchronous I/O" для MS;
nonblocking и
async i/o — для linux .
--
Maxim YegorushkinPosted via RSDN NNTP Server 1.9 gamma