2

重複の可能性:
C++ char* と std::string の比較

std::string の代わりに char* を使用する利点はありますか?

char* は通常、スタック上で定義されているので、使用するメモリの量が正確にわかっています。または、あらゆる点で std::string の方が優れていますか?

4

2 に答える 2

4

C++ で書いている場合は、遭遇するほとんどの場合、std::string の方が優れています。代わりに、char* を使用したい場合がいくつかあります: -

古い C コードとの互換性 (ただし、std::string の c_str() メソッドがこのほとんどを処理します)

- メモリを節約するため (std::string にはおそらくもっと多くのオーバーヘッド)

- ネットワーク コードや共有メモリなど、メモリの場所を確認したい場合

于 2010-04-27T05:32:12.570 に答える
2

C++ std::string のみを扱う場合、ほぼすべての点で優れています。私がまだC文字列を使用している唯一のケースは

  1. OS と通信しますが、通常、文字列を OS に渡す場合は std::string::c_str でカバーされます
  2. 定数 - std::string は、アプリの起動時にヒープ割り当てを行うため、定数文字列の重みが少し重い

明らかに、すべての規則には例外があります。たとえば、多くのテキスト解析を行っている場合は、バッファへの生のポインタを使用する方が効率的ですが、一般的な文字列をいじる場合は std::string が推奨されます。

于 2010-04-27T05:35:34.760 に答える