2012-06-14 16 views
5

का उपयोग कर स्ट्रिंग से वर्णों को हटा रहा है। मेरे पास एक छोटा सा मस्तिष्क फार्ट है: मैं std::string में न्यूलाइन कैरेक्टर '\n' के सभी उदाहरणों को हटाना चाहता हूं। मैं मैनुअल के बजाय एसटीएल का उपयोग करना पसंद करूंगा, लूप के लिए बहु-नेस्टेड; एकमात्र समस्या यह है कि मैं भूल गया हूं कि कैसे ...सी ++ एसटीएल

for(...) { std::string::remove_if(...); } ; काम करेगा? क्या मुझे std::for_each(...,..., std::string::remove_if(...)); का उपयोग करने की आवश्यकता हो सकती है? या कुछ और चाहिए?

उत्तर

19

पहले विचार: निकालें/मिटा मुहावरा:

str.erase(std::remove(str.begin(), str.end(), '\n'), str.end()); 
+1

+1 दक्षता के लिए :) – Mahesh

+0

दरअसल, इस सबसे अधिक संभावना है आपको सबसे अच्छा मिलेगा। संकलित करने के लिए – chris

+4

मुझे इसके लिए '# शामिल 'का उपयोग करने की आवश्यकता है। – Westy92

3

आप Boost.Range है, तो यह काम करता है भी कम:

#include <boost\range\algorithm_ext\erase.hpp> 

boost::remove_erase(str, '\n'); 
+0

संक्षिप्त नाम 'बूस्ट :: रेंज :: remove_erase' के तहत भी उपलब्ध है और व्यापक रूप से' बूस्ट/रेंज/एल्गोरिदम_ext.hpp' – Stein

संबंधित मुद्दे