के लिए स्प्लिट कार्यक्षमता vC++ में डिलीमीटर द्वारा CString
ऑब्जेक्ट को कैसे विभाजित करें?एमएफसी सीस्ट्रिंग कक्षा
उदाहरण के लिए मैं एक string
मूल्य
"एक + दो + तीन + चार"
एक CString
varable में है।
के लिए स्प्लिट कार्यक्षमता vC++ में डिलीमीटर द्वारा CString
ऑब्जेक्ट को कैसे विभाजित करें?एमएफसी सीस्ट्रिंग कक्षा
उदाहरण के लिए मैं एक string
मूल्य
"एक + दो + तीन + चार"
एक CString
varable में है।
इसी this question रहे हैं:
CString str = _T("one+two+three+four");
int nTokenPos = 0;
CString strToken = str.Tokenize(_T("+"), nTokenPos);
while (!strToken.IsEmpty())
{
// do something with strToken
// ....
strToken = str.Tokenize(_T("+"), nTokenPos);
}
VC6 में, जहां cstring एक Tokenize विधि नहीं है, आप strtok समारोह और यह के दोस्तों के लिए स्थगित कर सकते हैं।
#include <tchar.h>
// ...
CString cstr = _T("one+two+three+four");
TCHAR * str = (LPCTSTR)cstr;
TCHAR * pch = _tcstok (str,_T("+"));
while (pch != NULL)
{
// do something with token in pch
//
pch = _tcstok (NULL, _T("+"));
}
// ...
CString sInput="one+two+three";
CString sToken=_T("");
int i = 0; // substring index to extract
while (AfxExtractSubString(sToken, sInput, i,'+'))
{
//..
//work with sToken
//..
i++;
}
क्रैपी ओओ और खराब एपीआई के साथ यह एक समस्या है - सभी जगहों पर काम करता है :) अच्छा लगता है। – sje397
आप अपने खुद के प्रश्न का उत्तर दे सकते हैं। यह एफएक्यू में है। – sje397
मैं अल्पविराम विभाजक को प्लस-साइन में बदल दूंगा, या उदाहरण काम नहीं करेगा। – TechNyquist
int i = 0;
CStringArray saItems;
for(CString sItem = sFrom.Tokenize(" ",i); i >= 0; sItem = sFrom.Tokenize(" ",i))
{
saItems.Add(sItem);
}
हाय, Tokenize VC6 MFC में समर्थित नहीं है, लेकिन ATL – Dharma
में समर्थित आप शायद इस सवाल का कि आवश्यकता जोड़ना चाहिए। – sje397
[CStringT :: Tokenize()] के लिए दस्तावेज़ (http://msdn.microsoft.com/en-us/library/k4ftfkd2.aspx) कहते हैं कि फ़ंक्शन प्रमुख डिलीमीटरों को छोड़ देता है, इसलिए यदि आप वास्तव में एक स्ट्रिंग को विभाजित करना चाहते हैं और खाली सबस्ट्रिंग को अनदेखा नहीं करते हैं, तो मैं कहूंगा कि आप 'टोकनिज() 'का उपयोग नहीं कर सकते हैं। उदाहरण के लिए, "+ एक + दो + तीन + चार" 5 सबस्ट्रिंग के अपेक्षित परिणाम नहीं देगा। – herzbube