2009-05-07 32 views
34

Một trong những khả năng là:Cách tốt nhất để trống chuỗi?

somestringstream.str(""); 

Nhưng tối ưu nhất? Có cách nào để bảo tồn bộ đệm nội bộ chuỗi, do đó các cuộc gọi sau đây < <() sẽ không yêu cầu đặt trước bộ nhớ?

+3

Nó đã được thảo luận tại đây: http://stackoverflow.com/questions/624260/how-to-reuse-an-ostringstream –

Trả lời

44

Tôi đã luôn luôn thực hiện:

s.clear();//clear any bits set 
s.str(std::string()); 

@litb gets into more detail về cách seekp đến sự bắt đầu của dòng kết hợp với std :: kết thúc bạn có thể giữ kích thước phân bổ của bạn.

+2

hoặc chỉ đơn giản là ss.str (""); // trực quan hơn – Milan

+0

@ milan1612: Bạn vẫn cần phải xóa các bit và gửi một char kiểu C * sẽ chậm hơn. –

+2

..và [điều này giải thích] (http://stackoverflow.com/questions/20731/in-c-how-do-you-clear-a-stringstream-variable) tại sao chuỗi 's.str (std :: string()) 'biến thể _could_ hiệu quả hơn. –

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