2010-12-13 71 views
28

Có cách nào trực tiếp để tính kích thước của chuỗi nội bộ trong chuỗi không?Kích thước của chuỗi

Ở đây, str() trả lại một bản sao và sau đó nó nhận được kích thước của chuỗi.

std::stringstream oss("String"); 
oss.str().size(); 

Trả lời

15
std::stringstream oss("String"); 
oss.seekp(0, ios::end); 
stringstream::pos_type offset = oss.tellp(); 

này là dành cho con trỏ ghi, nhưng kết quả là như nhau cho con trỏ đọc trên Visual C++ v10.

41

Tất nhiên có là:

std::stringstream oss("Foo"); 
oss.seekg(0, ios::end); 
int size = oss.tellg(); 

Bây giờ, kích thước sẽ chứa các kích thước (tính theo byte) của chuỗi.

EDIT:

Đây cũng là một ý tưởng tốt để đặt sau đoạn ở trên vì nó đặt con trỏ bên trong lại phần đầu của chuỗi.

oss.seekg(0, ios::beg); 
+0

Thú vị. Tôi tự hỏi nếu điều này sẽ luôn luôn hiển thị kết quả tương tự như viết tương đương con trỏ. –

+1

Nếu bạn sử dụng con trỏ viết, bạn vẫn cần phải tìm cách kết thúc? Nó sẽ không luôn luôn ở cuối? – Ferruccio

+1

Gcc 4.4 dường như không thích điều này, nó đặt luồng không hoạt động –

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