Frage zu sscanf()

Perdan

Mitglied
Hallo zusammen,

Ich verwende Visual Studio 2005 und c++.

Mein Problem ist folgendes:
Code:
CString  cstr = "33 205 12 Ich habe ein Problem";
int         iNr1;
int         iNr2;
int         iNr3;
CString  cstrTemp;

swscanf(cstr.GetBuffer(), _T("%d%d%d%s"), &iNr1, &iNr2, &iNr3, cstrTemp);

Ich will nun die einzelnen Zahlen haben (das funktioniert)
und den rest in einem CString, wobei ich nicht weiß aus wievielen Wörtern der besteht.

So wie ich es versucht habe (siehe oben) habe ich nur das erste Wort in cstrTemp.

Kann mir wer helfen wie man es anstellt, das der komplette Rest in cstrTemp steht und nicht nur das erste Wort?

MfG

Perdan
 
Hallo,

ich denke, mit sscanf() zu arbeiten, ist hier der falsche Weg. Ich würde vorschlagen den String in einzelne Tokens zu zerlegen und dann die entsprechenden Daten da herauszuziehen. Das Zerlegen könnte man mit der Tokenize-Methode von CString machen:
C++:
CString cstr = _T("33 205 12 Ich habe ein Problem");

int     iNr1;
int     iNr2;
int     iNr3;
CString strText = _T("");

int     nStart   = 0;
int     nCount   = 0;
CString strToken = cstr.Tokenize(_T(" "), nStart);

while( !strToken.IsEmpty() )
{
    switch( nCount )
    {
        case 0:  iNr1 = _ttoi(strToken); break;
        case 1:  iNr2 = _ttoi(strToken); break;
        case 2:  iNr3 = _ttoi(strToken); break;
        default: strText += strToken + _T(" ");
    }
    
    strToken = cstr.Tokenize(_T(" "), nStart);
    nCount++;
}

strText = strText.TrimRight();
Gruß
MCoder
 
Zurück