2009-05-25 28 views
171

Tôi đã đọc câu trả lời cho số question và thấy rằng thực sự có phương thức gọi là length() cho chuỗi (tôi luôn sử dụng size()). Có lý do cụ thể để có phương pháp này trong lớp chuỗi? Tôi đọc cả MSDN và CppRefernce và họ dường như chỉ ra rằng không có sự khác biệt giữa size() và length(). Nếu đó là như vậy, không phải là nó làm cho khó hiểu hơn cho người sử dụng của lớp?std :: string length() và size() Các hàm thành viên

Trả lời

226

Theo documentation, đây chỉ là các từ đồng nghĩa. size() phải phù hợp với các hộp chứa STL khác (như vector, map, , v.v.) và length() phải nhất quán với khái niệm trực quan của hầu hết mọi người về các chuỗi ký tự. Mọi người thường nói về một từ, câu hoặc đoạn là chiều dài, không phải kích thước của nó, vì vậy, length() có thể giúp mọi thứ dễ đọc hơn.

+7

Đồng ý. Khi tôi viết các lớp mẫu và các hàm tôi muốn sử dụng 'size()' (Trong trường hợp tôi sử dụng các lớp không phải chuỗi), nhưng hầu hết thời gian tôi sử dụng 'length()' khi làm việc với các chuỗi đơn giản. – Marius

+1

Không kích thước() trả về kích thước của chuỗi trong bộ nhớ (tính bằng byte), trong khi length() trả về số ký tự, chỉ xảy ra trùng với 1 char = 1 byte? –

+1

No. Chúng có cùng chức năng; họ thậm chí chia sẻ tài liệu: http://en.cppreference.com/w/cpp/string/basic_string/size. – tgamblin

15

Ruby chỉ giống nhau, btw, cung cấp cả #length#size là từ đồng nghĩa cho số mục trong mảng và băm (C++ chỉ làm nó cho chuỗi).

Người tối giản và những người tin rằng "nên có một, và lý tưởng chỉ có một, cách rõ ràng để làm điều đó" (như Zen của Python đọc) sẽ, tôi đoán, chủ yếu là đồng ý với những nghi ngờ của bạn, @Naveen, trong khi người hâm mộ của Perl "Có nhiều hơn một cách để làm điều đó" (hoặc cú pháp của SQL với một "từ tiếng ồn" tùy chọn vô giá trị cho ra một dạng khái niệm tương đương với một khái niệm) sẽ không nghi ngờ gì về Ruby, và đặc biệt là C++, 't đi đủ xa trong việc cung cấp dư thừa từ đồng nghĩa ;-).

+8

Trong trường hợp này, nó là vô cớ. Ngữ pháp và cách sử dụng của Perl cho phép bạn thể hiện mọi thứ bằng cách sử dụng kiểu nào bạn thích. Có hai từ khác nhau cho cùng một thứ chỉ làm cho khó có thể tìm ra các thuật ngữ tìm kiếm trong Stackoverflow. –

-3

chiều dài của chuỗi == bao nhiêu bit rằng chuỗi có, kích thước == kích thước của những bit, Trong chuỗi cả hai đều tương tự nếu người biên tập phân bổ kích thước của nhân vật là 1 byte

+0

câu trả lời không chính xác. Xem tài liệu được liên kết trong câu trả lời được chấp nhận. –

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