違いは何だstd::string
とはstd::basic_string
?そして、なぜ両方が必要なのですか?
回答:
std::basic_string
は文字タイプから文字列を作成するためのクラステンプレートであり、std::string
はtypedef
そのクラステンプレートを特殊化するためのものchar
です。はい、両方とも必要です(または少なくとも標準で必要です)。
std::string
のインスタンス化ですstd::basic_string<T>
:
typedef std::basic_string<char> string
std::basic_string
すべてのタイプの文字列(wstring
たとえば)に対して同様のインターフェースを持つ必要があります。
string
の専門ですbasic_string
。
namespace std { typedef basic_string<char> string; }
技術的には、実際にはインスタンス化でもありませんが、少なくとも近いです(インスタンス化は、定義上、インスタンスを作成し、typedefは名前のみを作成し、インスタンスは作成しません) )。