>>292
前者は特に規格では規定されていないが、効率は多分clear()の
方が速いだろう。単に見やすさのために空文字列を代入していると
思われる。

後者は、非強制的な要求であり、必ずしも解除されるとは保証
されていない。reserve()で確保した領域を解除するには、

str.clear();
str.swap(str);

と二段階のステップを踏むとよい。