IndyのReadStringFromStream関数で、文字列のStreamを簡単にUnicodeStringに変換できる。
/**
* @param TStream* ストリーム
* @param int ストリームから変換するサイズ
* @param TEncoding* エンコーディング
*/
System::UnicodeString __fastcall ReadStringFromStream(
Classes::TStream* AStream,
int ASize = 0xffffffff,
Sysutils::TEncoding* AByteEncoding = (Sysutils::TEncoding*)(0x0));
使用例
フォームにTIdHTTPコンポーネントを配置します。
#include <memory>
std::unique_ptr<TMemoryStream> ms(new TMemoryStream());
IdHTTP1->Get(L"http://www.yahoo.co.jp/", ms.get());
ms->Position = 0;
//文字コードがUTF-8のとき
UnicodeString s = ReadStringFromStream(ms.get(), ms->Size, TEncoding::UTF8);