2009-05-07 6 views
34

संभावनाओं से एक है:स्ट्रिंगस्ट्रीम खाली करने का सबसे अच्छा तरीका?

somestringstream.str(""); 

लेकिन यह सबसे इष्टतम है? स्ट्रिंगस्ट्रीम आंतरिक बफर को संरक्षित करने का कोई तरीका है, ताकि ऑपरेटर < <() कॉल के बाद स्मृति को फिर से आरक्षित करने की आवश्यकता नहीं होगी?

+3

इस पर चर्चा की गई: http://stackoverflow.com/questions/624260/how-to-reuse-an-ostringstream –

उत्तर

44

मैं हमेशा किया है:

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

@litb gets into more detail कैसे एसटीडी के साथ संयुक्त धारा के शुरू करने के seekp के बारे में :: समाप्त होता है जब आप अपने आवंटित आकार रख सकते हैं।

+2

या बस ss.str (""); // अधिक सहज ज्ञान युक्त – Milan

+0

@ मिलन 1612: आपको अभी भी बिट्स को साफ़ करने और सी-स्टाइल चार भेजना * धीमा हो जाएगा। –

+2

.. और [यह बताता है] (http://stackoverflow.com/questions/20731/in-c-how-do-you-clear-a-stringstream-variable) क्यों 's.str (std :: string()) 'variant _could_ अधिक कुशल हो। –