2012-01-05 14 views
14

Eventuali duplicati:
Difference between string.h and cstring?Compresi i file di intestazione standard. string.h o cstring? o entrambi?

Cosa è meglio pratica di programmazione in C++ quando compresi file di intestazione standard rispetto al

compresi cmath in luogo di math.h o viceversa ?

compreso cstring in sostituzione di string.h o viceversa?

e per altri <c*> e <*.h> file di intestazione che sembrano apparentemente realizzare la stessa cosa?

+0

@Jefromi: non esattamente un dupe; questa domanda riguarda anche ''. –

risposta

23

<cstring> è più recente; <string.h> è davvero lì per compatibilità con le versioni precedenti (e per C, ovviamente). La differenza è che <cstring> inserisce le funzioni stringa nello spazio dei nomi std, mentre <string.h> le inserisce nello spazio dei nomi globale.

Inoltre, <cstring> modifica i tipi di alcune funzioni per promuovere la sicurezza del tipo. Ad esempio, la dichiarazione C

char *strchr(char const *, int); 

è sostituito dai sovraccarichi (nel std namespace)

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

Nel caso di <cmath> ci sono further differences con <math.h> che rendono <cmath> più idiomatica e meno C-like .

Preferire <cstring> per il nuovo codice e utilizzare il prefisso std:: sulle funzioni.

Problemi correlati