2011-06-28 33 views
15

thể trùng lặp:
std::string length() and size() member functionsstd :: string :: length() vs std :: string :: kích thước()

tôi luôn luôn lấy chiều dài của một std::string qua chức năng thành viên size(). Thành thật mà nói tôi không bao giờ biết có một hàm thành viên length(). Vâng, tôi vừa học được ở đó. Vì vậy, tôi tự hỏi nếu có bất kỳ sự khác biệt giữa hai, và trong trường hợp có khả năng của một câu trả lời tiêu cực, tại sao sẽ có hai chức năng thành viên làm chính xác như nhau?

Trả lời

10

Không! Không khác nhau. Tên tự nhiên hơn cho hàm này là length()size() được cung cấp cùng với tính đồng nhất với các vùng chứa.

+3

Tiêu chuẩn nào? –

+0

@Armen: Tôi không có cuốn sách với tôi vào lúc này :) – Ryan

+3

Điều này sẽ có vấn đề nếu trong tương lai ngữ nghĩa thay đổi. Về mặt ngữ nghĩa nói (trừ ngữ nghĩa STL), kích thước có thể phản ánh số byte của chuỗi) trong khi độ dài có thể tham chiếu đến số "ký tự" của chuỗi đó. Trong ASCII hai cung cấp cho cùng một kết quả, nhưng điều này không giữ cho các mã hóa khác như UTF vv – sitifensys

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