2011-07-14 8 views
1

std::string const &の引数を持つ関数のLNK2019未解決の外部シンボルエラーを追跡しようとしています。 this answerこれはstd :: stringと同じですか?

ステップ1が飾ら/装飾のない名前を確認するために言いますが、これは私が引数リストにリンカエラーテキストで見ているものです:

class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const & 

が、これもstd::string const &ですか?

ありがとうございました。

私はVS 2008を実行しています。

+1

はい、同じことです。 –

+1

'string' [ここ](http://msdn.microsoft.com/en-us/library/hd5zecz6(V= VS.100).aspx)のtypedefをチェックしてください: 'typedef basic_string string'と注意してくださいbasic_stringテンプレートへの 'Traits'と' Allocator'パラメータのデフォルト値 –

+0

HansとFrankにありがとうございます。 – John

答えて

4

はい。

C++標準化の一部として、std::stringクラスはSTL互換になりました。 STLコンテナと同様に、要素タイプを選択できます。一般的な選択はcharwchar_tですが、Visual C++ユーザーはTCHARも使用できます。 STLコンテナと同様に、メモリ割り当てはアロケータによって処理されます。

しかし、文字列は他のコンテナと異なります。一部のメソッドでは、その要素に対してより複雑な操作を実行する必要があるためです。 std::set<T>は2つのTオブジェクトを比較するだけですが、std::stringはマルチバイトエンコーディングとそのような複雑さに対処する必要があります。これらの詳細はクラスstd::char_traits<char>にまとめられています。

このように複雑になると、最終的にstd::basic_string<char, std::char_traits<char>, std::allocator<char> >になります。それはあまり親切ではないですし、ほとんどの人はデフォルトを必要としています。 std::stringはそれのフレンドリーな名前です。

+0

非常に有用なMSalters。ありがとうございました! – John

関連する問題