2012-01-05 11 views
14

Powiel możliwe:
Difference between string.h and cstring?W tym standardowe pliki nagłówkowe. string.h czy cstring? lub oba?

Co jest lepsze praktyki programowania w C++ przy tym standardowe pliki nagłówkowe w odniesieniu do

tym cmath zamiast math.h lub odwrotnie ?

w tym cstring zamiast string.h lub odwrotnie?

i dla innych plików nagłówkowych <c*> i <*.h>, które najwyraźniej osiągają to samo?

+0

@Jefromi: niezupełnie dupe; to pytanie odnosi się również do ''. –

Odpowiedz

23

<cstring> jest nowsza; <string.h> jest naprawdę kompatybilny z poprzednimi wersjami (i oczywiście C). Różnica polega na tym, że <cstring> umieszcza funkcje łańcuchowe w przestrzeni nazw std, podczas gdy <string.h> umieszcza je w globalnej przestrzeni nazw.

Ponadto, <cstring> zmienia typy niektórych funkcji promujących bezpieczeństwo typu. Na przykład, zgłoszenie C

char *strchr(char const *, int); 

otrzymuje przeciążeniem (w nazw std)

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

W przypadku <cmath>further differences z <math.h> które sprawiają <cmath> więcej idiomatycznym i mniejszego C podobny .

Aby uzyskać nowy kod, należy wpisać <cstring> i użyć prefiksu std:: dla funkcji.

Powiązane problemy