2012-01-06 29 views
5

Câu hỏi đơn giản chỉ tò mò.Cách nào hiệu quả hơn/gọn gàng: xóa một chuỗi hiện tại hoặc tạo chuỗi mới?

Nhiều phương pháp trong một lớp học cần phải sử dụng chuỗi, hoặc đặc biệt là một ostringstream.

1) Có một biến stringstream như một thành viên lớp và sau đó chỉ cần rõ ràng nó trước khi sử dụng nó tức là msg.str("")

2) Tạo một biến stringstream mới tại địa phương trong từng phương pháp mỗi khi bạn cần phải sử dụng nó .

Cách tốt nhất để thực hiện điều này, về mặt hiệu quả và sự gọn gàng là gì?

Linh cảm của tôi là tùy chọn 1, nhưng không chắc chắn nếu kết cấu ban đầu được kết hợp với mỗi lệnh gọi tới str() sẽ tồi tệ hơn?

P.S. Tôi đã đọc và Initializing.. which one is more efficient?Which is quicker/more efficient?, bước tiếp theo của tôi sẽ cho tôi để nhìn vào hồ sơ và viết một ứng dụng thử nghiệm nhỏ, nhưng tôi cảm thấy hỏi có thể được nhanh hơn :-)

+0

Vấn đề với câu hỏi là câu trả lời sẽ đầy đủ về tôn giáo và văn hóa dân gian và rất có thể sẽ không áp dụng cho trường hợp của bạn. Hồ sơ nên được ưa thích. – PlasmaHH

+0

@PlasmaHH: hồ sơ chỉ hiển thị hiệu suất ... nếu được thực hiện đúng. Hỏi cũng có thể trỏ đến các sai sót khác trong một số phương pháp (ví dụ liên quan đến khía cạnh "gọn gàng"). Điều đó nói rằng, tôi chỉ có thể đồng ý rằng tính chủ quan là một rủi ro. –

+0

Và vấn đề với lược tả là nó trả lời câu hỏi cho môi trường bạn đang chạy (nếu bạn không nói lên - việc lược tả có thể phức tạp để làm đúng), và bạn không tìm hiểu về tính nhất quán, tính di động hoặc tính chính xác các vấn đề như James đã chỉ ra .... –

Trả lời

7

Không sử dụng stringstream để bắt đầu với. Sử dụng hoặc istringstream hoặc ostringstream, điều này là phù hợp. Và chỉ sử dụng nó một lần; xóa nó là một hoạt động phức tạp, đòi hỏi một số dòng mã, và nó rất dễ dàng để quên một cái gì đó. msg.str("") không bắt đầu giải quyết tất cả trạng thái. Bạn cũng cần đặt lại cờ định dạng, trạng thái lỗi, mặt nạ ngoại lệ và mọi định dạng bổ sung thông tin được đặt trong các biến được mua bằng phương tiện xalloc.

+0

Tuyệt vời, cảm ơn vì điều đó –

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