VMime Book 日本語訳 第4章 4.5

VMime Book 日本語訳 第4章 4.5
2020-07-01 K.OHWADA

原文
VMime Book: A Developer’s Guide To VMime
https://www.vmime.org/public/documentation/book/vmime-book.pdf

全体目次

第4章 基本

Basics

ページ内 目次
4.5 ストリーム
4.5.1 ストリームと ストリームアダプタ
4.5.2 ストリームフィルター

4.5 ストリーム

Streams

4.5.1 ストリームと ストリームアダプタ

Streams and stream adapters

ストリームは、基盤となるシステムが何であれ、データの読み取りまたは書き込みを許可します。
ハードディスク上のファイル、リモートサービスに接続されたソケット...
ストリームには、入力ストリーム(データを読み取ることができる)と出力ストリーム(データを書き込むことができる)の2種類があります。
互換性と利便性のために、次のような一部のアダプターが提供されています。

  • inputStreamAdapterおよびoutputStreamAdapter:
    VMimeで標準のC ++ iostreamを使用できるようにします。

-inputStreamStringAdapterおよびoutputStreamStringAdapter:
vmime :: stringオブジェクトを使用してデータの読み取り/書き込みを行います

次の例は、ストリームアダプタを使用して現在の日付を標準出力に書き込む2つの方法を示しています。

リスト4.7:ストリームアダプターの使用
Using stream adapters

// Get current date and time
const vmime::datetime date = vmime::datetime::now(); // 1. Using outputStreamAdapter
vmime::utility::outputStreamAdapter out(std::cout);
std::cout << ”Current date is: ”; date.generate(out);
std::cout << std::endl;
// 2. Using outputStreamStringAdapter
vmime::string dateStr;
vmime:: utility ::outputStreamStringAdapter outStr(dateStr);
date.generate(outStr);
std::cout << ”Current date is: ” << dateStr << std::endl;

4.5.2 ストリームフィルター

Stream filters

入力ストリームと出力ストリームをフィルタリングして、インライン変換を実行できます (たとえば、「\ r \ n」シーケンスを次のように変換するフィルターがあります。
vmime:: utility :: filteredInputStreamまたは vmime :: Utility :: filteredOutputStreamは、アダプターのように使用されます(一部のフィルターはパラメーターも受け入れます。ドキュメントを参照してください)

VMimeで最も便利なフィルター(そしておそらくあなたが必要とする唯一のフィルター)は、charsetのインライン変換を実行するcharsetFilteredOutputStreamです。
使用方法については、4.7を参照してください。

注:
フィルター処理された出力ストリームの使用が終了したら、そのストリームでflush()を呼び出して内部バッファーをフラッシュすることが重要です。 flush()が呼び出されない場合、すべてのデータが基になるストリームに書き込まれるとは限りません。