違いは何だ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は名前のみを作成し、インスタンスは作成しません) )。