उन लोगों के लिए जो अधिक संक्षिप्त पसंद करते हैं, लंबोदर कोडिंग शैली पढ़ना आसान है ...
यह उदाहरण सभी गैर-अल्फ़ान्यूमेरिक और सफ़ेद अंतरिक्ष वर्णों को एक विस्तृत स्ट्रिंग से निकालता है। आप इसे किसी भी अन्य ctype.h सहायक कार्यों के साथ मिश्रित कर सकते हैं ताकि जटिल दिखने वाले चरित्र-आधारित परीक्षणों को हटाया जा सके।
(मुझे यकीन नहीं है कि ये फ़ंक्शन सीजेके भाषाओं को कैसे संभालेंगे, इसलिए वहां नरम तरीके से चलें।)
// Boring C loops: 'for(int i=0;i<str.size();i++)'
// Boring C++ eqivalent: 'for(iterator iter=c.begin; iter != c.end; ++iter)'
देखें कि क्या आपको शोरगुल C / C ++ की तुलना में समझने में आसान नहीं है / iterator loops:
TSTRING label = _T("1. Replen & Move RPMV");
TSTRING newLabel = label;
set<TCHAR> badChars; // Use ispunct, isalpha, isdigit, et.al. (lambda version, with capture list parameter(s) example; handiest thing since sliced bread)
for_each(label.begin(), label.end(), [&badChars](TCHAR n){
if (!isalpha(n) && !isdigit(n))
badChars.insert(n);
});
for_each(badChars.begin(), badChars.end(), [&newLabel](TCHAR n){
newLabel.erase(std::remove(newLabel.begin(), newLabel.end(), n), newLabel.end());
});
इस कोड को चलाने के बाद newLabel परिणाम: " 1ReplenMoveRPMV "
यह सिर्फ अकादमिक है, क्योंकि यह स्पष्ट रूप से अधिक सटीक, संक्षिप्त और कुशल होगा अगर 'lambda0 (पहले for_each ) से तर्क को एकल lambda1 (दूसरा for_each ) में जोड़ा जाए , यदि आपने पहले ही स्थापित कर लिया है कि कौन से अक्षर "badChars" हैं ।