我无法将UTF8编码的文件读入wchar_t
缓冲区,因为我事先并不知道文件大小。
有谁知道如何在缓冲区中读取整个文件?
我想我必须保留wchar_t *
(指针)并在我阅读时调整它的大小。然而,这听起来非常可怕,因为我之前从未调整指针的大小。
我正在使用Microsoft Visual Studio进行Windows C ++编程。
答案 0 :(得分:2)
您是否考虑过使用矢量?
#include <vector>
#include <fstream>
#include <iterator>
:::
std::ifstream in(file_name);
//Will automatically reallocate to the require size
std::vector<wchar_t> store(
std::istream_iterator<wchar_t>(in),
std::istream_iterator<wchar_t>());
//to access wchar_t* you can call data();
my_func(store.data());
答案 1 :(得分:0)
如果要分配首先需要查找文件大小的文件大小的缓冲区。为此,您可以使用适当的参数调用stat()函数,并填充包含文件大小的字段。
假设您将该大小存储在变量filesize
。
然后你可以
wchar_t *buffer = reinterpret_cast< wchar_t * >new char [ filesize ];
然后在调用open()获取文件描述符之后使用read()将整个文件读入该缓冲区,或者在调用fopen()获取FILE *之后读取fread()。 p>