1

wchar_t事前にファイルサイズがわからないため、UTF8エンコーディングのファイルをバッファに読み込むのに問題があります。

バッファ内のファイル全体を読み取る方法を知っている人はいますか?

wchar_t *(ポインタ)を保持し、読みながらサイズを変更する必要があると思います。ただし、これまでポインタのサイズを変更したことがないため、これは非常に恐ろしいことです。

私はMicrosoftVisualStudioでWindowsC++プログラミングを行っています。

4

2 に答える 2

2

ベクトルの使用を検討したことがありますか?

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

:::

std::wifstream in(file_name);

//Will automatically reallocate to the require size
std::vector<wchar_t> store {
    std::istream_iterator<wchar_t, wchar_t>(in),
    std::istream_iterator<wchar_t, wchar_t>()};

//to access wchar_t* you can call data();
my_func(store.data());
于 2012-04-07T19:38:37.107 に答える
0

ファイルのサイズのバッファを割り当てたい場合は、最初にファイルのサイズを見つける必要があります。これを行うには、適切な引数を指定して stat() 関数を呼び出し、ファイル サイズを含むフィールドに入力します。

そのサイズを変数に格納するとしますfilesize

その後、次のことができます

wchar_t *buffer = reinterpret_cast< wchar_t * >new char [ filesize ];

次に、ファイル記述子を取得するために open() を呼び出した後に read() を使用するか、fopen() を呼び出して FILE * を取得した後に fread() を使用して、ファイル全体をそのバッファーに読み込みます。

于 2012-04-07T19:39:09.190 に答える