char 配列を ostream に送信する必要があります。次の印刷機能があるとします。
バージョン 1:
void print(ostream &out, const char *str, unsigned len)
{
out << string(str,len);
}
バージョン 2:
void print(ostream &out, const char *str, unsigned len)
{
out.write(str,len);
}
上記の両方のバージョンは、ある程度機能します。バージョン 1 は余分な文字列オブジェクトを作成するため (メモリの割り当てとデータのコピーが発生します)、あまり効率的ではないように見えます。
ただし、バージョン 2 では書式設定の可能性がなくなります。次の例では、バージョン 1 がうまく機能します (つまり、io マニピュレータは幅を 10 に設定し、それを次の出力フィールドに適用します)。
out << setw(10);
print(out,s,slen);
V1 のように機能を維持する方法はありますが、割り当て/メモリコピーに追加料金を支払う必要はありませんか?