21

C++ プロジェクトに標準ヘッダー string.h を含める最良の方法はどれですか? 次のように、最後に [dot]h を使用します。

#include <string.h>

またはただ書いている

#include <string>

それとも、私が知らない別の方法を使用していますか?

ありがとう!

4

6 に答える 6

59

これらは 2 つの異なるヘッダーです。

  • <string>C++std::stringクラス用です
  • <string.h>は、c 文字列関数 (など) 用です。これは、c++ プロジェクト用strlen()である必要があります(これは 3 番目で、あなたが知りませんでした)。<cstring>
于 2011-11-29T15:10:08.680 に答える
7

そのかなり違う!

<string.h>Cスタイルの文字列用のこのライブラリ

<string>C++ 文字列用

<cstring>C++ の標準では、代わりに使用する必要があります<string.h>

于 2011-11-29T15:11:02.490 に答える
2

ウィキは次のように述べています。

C++ 標準ライブラリには、「.h」で終わる ISO C90 C 標準ライブラリの 18 個のヘッダーも組み込まれていますが、それらの使用は非推奨です。C++ 標準ライブラリの他のすべてのヘッダーは、「.h」で終わらないでください。

C 標準ライブラリの各ヘッダーは、C++ 標準ライブラリに別の名前で含まれています。これは、.h を削除し、先頭に「c」を追加することによって生成されます。たとえば、「time.h」は「ctime」になります。

于 2011-11-29T15:11:46.177 に答える
1

string は、テンプレート クラス 'string' を提供する c++ stl headfile です。string.h は、使用する多くの関数を提供する C 標準の headfile です。strlen strcpy memcpy のように。グローブ名前空間を使用しない名前空間 std で使用する場合、または string.h を使用したくない場合は、代わりに cstring を使用できます。

于 2011-11-29T16:03:05.393 に答える
0

多くの*.h場合、ヘッダー ファイルは C ヘッダー ファイルであり、おそらくextern "C" { ... }ラッピングを使用して C++ で使用できます。

何もないヘッダー*.hは通常、本物の C++ ヘッダーです。

これはあくまでも経験則です。

最新および以前の C++ 標準 (c++11、C++03) では<cstdio>、名前空間などを使用して、元の C ヘッダーを適切にラップするようなヘッダーが定義されています。

于 2011-11-29T15:11:06.257 に答える
-3

標準は

#include <string>
于 2011-11-29T15:08:44.807 に答える