2012-01-05 8 views
14

可能性の重複:
Difference between string.h and cstring?標準ヘッダーファイルを含みます。 string.hまたはcstring?または両方?

math.hの代わりにcmathまたはその逆を含む

に関して標準ヘッダファイルを含むとき、C++でのより良いプログラミングの練習は何ですか? string.hまたはその逆の代わりにcstring含む

他の<c*><*.h>のヘッダーファイルでは、同じことを実行しているようです。

+0

@ジェフロミ:まったくダストではありません。この質問は ''にも関係します。 –

答えて

23

<cstring>は新しいものです。 <string.h>は実際には下位互換性のために(もちろんCのために)存在します。違いは<cstring>std名前空間に文字列関数を置きますが、<string.h>はそれらをグローバル名前空間に置きます。

さらに、<cstring>はタイプセーフティを促進するために特定の関数のタイプを変更します。例えば、C宣言

char *strchr(char const *, int); 

は(std名前空間内の)オーバーロード<cmath>より慣用未満C状作る<math.h>further differencesある<cmath>の場合

char  *strchr(char  *, int); 
char const *strchr(char const *, int); 

によって置き換えられます。

新しいコードには<cstring>が好ましく、機能には接頭辞std::が使用されます。

関連する問題