Standardではない邪道なC++ライブラリの開発日誌
前回、文字および文字列はワイド文字を基本とすることを書きました。その後、文字列クラスをどうするかについていろいろ検討を行いました。簡単にいえば、
std::wstringをそのまま使うのか、std::wstringを一度ラッピングするのか、あるいは全く独自のクラスを使うのかについてです。
全く独自の文字列クラスを使う方法については、手間がかかる割には得るものが少なく、真っ先に除外することにしました。後は、
ラッピングする場合のメリットは、処理系間の細かな仕様の違いを吸収しやすい点にあります。また、アロケータをデフォルト以外に変更したい場合など、
結論としては、
std::wstringをラッピングするかどうかです。ラッピングする場合のメリットは、処理系間の細かな仕様の違いを吸収しやすい点にあります。また、アロケータをデフォルト以外に変更したい場合など、
::std::wstringではなく、std::basic_string<wchar_t, ...>の場合の使い勝手も向上します。std::wstringをそのまま使う場合のメリットは、標準の文字列型であるため、他のライブラリとの親和性が向上する可能性がある点、設計~実装の手間が省ける点などがあります。しかし、他のライブラリでstd::wstringが積極的に利用されているケースは稀であり、これについては疑問が残ります。結論としては、
std::wstringをラッピングして使うことにしました。ラッピングすれば、ナロー文字列をコンストラクタに渡して、自動的にワイド文字列に変換するようなこともできるので、利便性が向上することも多いでしょう。この記事にコメントする