2012-01-05 32 views
14

thể trùng lặp:
Difference between string.h and cstring?Bao gồm các tệp tiêu đề chuẩn. string.h hoặc cstring? hoặc cả hai?

thực hành lập trình tốt hơn trong C++ khi bao gồm cả các tập tin tiêu đề chuẩn liên quan đến

bao gồm cmath ở vị trí của math.h hoặc ngược lại là gì ?

bao gồm cstring thay cho string.h hoặc ngược lại?

và cho các tệp tiêu đề <c*><*.h> dường như dường như hoàn thành cùng một điều?

+0

@Jefromi: không chính xác là bản dupe; câu hỏi này cũng liên quan đến ''. –

Trả lời

23

<cstring> mới hơn; <string.h> thực sự có khả năng tương thích ngược (và đối với C, tất nhiên). Sự khác biệt là <cstring> đặt các hàm chuỗi trong không gian tên std, trong khi <string.h> đặt chúng trong không gian tên chung.

Ngoài ra, <cstring> thay đổi các loại chức năng nhất định để quảng bá an toàn loại. Ví dụ, việc kê khai C

char *strchr(char const *, int); 

được thay thế bằng phiên bản nạp chồng (trong không gian tên std)

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

Trong trường hợp của <cmath>further differences với <math.h> mà làm <cmath> ngữ hơn và ít giống C. .

Ưu tiên <cstring> cho mã mới và sử dụng tiền tố std:: trên các chức năng.

Các vấn đề liên quan