Wie teilt man ein CString
Objekt durch Delimeter in VC++?Geteilte Funktionalität für MFC Cstring Klasse
Zum Beispiel habe ich eine string
Wert
"one + zwei + drei + vier"
in eine CString
varable.
Wie teilt man ein CString
Objekt durch Delimeter in VC++?Geteilte Funktionalität für MFC Cstring Klasse
Zum Beispiel habe ich eine string
Wert
"one + zwei + drei + vier"
in eine CString
varable.
Ähnlich 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);
}
In VC6, wo CString keine tokenize Methode hat, können Sie auf die strtok Funktion und Freunde verschieben.
#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++;
}
Das ist ein Problem mit beschissenen OO und schlechten APIs - funktioniert überall :) Gut finden. – sje397
Sie können Ihre eigene Frage beantworten. Es ist in den FAQ. – sje397
Ich würde das Kommatrennzeichen in ein Pluszeichen ändern, oder das Beispiel wird nicht funktionieren. – TechNyquist
int i = 0;
CStringArray saItems;
for(CString sItem = sFrom.Tokenize(" ",i); i >= 0; sItem = sFrom.Tokenize(" ",i))
{
saItems.Add(sItem);
}
Hallo, ist tokenize nicht in VC6 MFC unterstützt, aber unterstützt in ATL – Dharma
Sie sollten wahrscheinlich diese Anforderung auf die Frage hinzuzufügen. – sje397
[Die Dokumente für CStringT :: Tokenize()] (http://msdn.microsoft.com/en-us/library/k4ftfkd2.aspx) sagen, dass die Funktion führende Trennzeichen überspringt, wenn Sie also wirklich eine Zeichenkette teilen wollen und ignoriere leere Teilstrings nicht, dann würde ich sagen, dass du 'Tokenize()' nicht benutzen kannst. Zum Beispiel würde "+ eins + zwei + drei + vier" nicht das erwartete Ergebnis von 5 Teilzeichenfolgen ergeben. – herzbube