Hallo,
hab in MFC aus einer Datei Zeilen in ein CString geladen. Das ganze schaut dann so aus: strLine {"1 2 -5 -3 7 -1 -1 0 Text"} Dazwischen befindet sich jeweils ein Tabstp zeichen.
Meine Frage wäre, wie bekomme ich die einzelnen Zahlen in getrennte Stings (oder in ein array) und dann sollten nur die Zahlen übernaommen werden, nicht aber der Text -hoffe jemand kann mir helfen.
Grüssle
Danni
Programmieren - alles kontrollieren 4.941 Themen, 20.708 Beiträge
hi,
char* TheString = "1 2 -5 -3 7 -1 -1 0 Text";
char TheResult[ strlen( TheString ) + 1 ];
int i, j( 0 );
for( i = 0; TheString[ i ] != '\\0'; i ++ )
{
      if( ( TheString[ i ] >= '0' ) && ( TheString[ i ]       {
            TheResult[ j ] = TheString[ i ];
            j ++;
      }
}
TheResult[ j ] = '\\0';
> Meine Frage wäre, wie bekomme ich die einzelnen Zahlen in getrennte Stings
> (oder in ein array) ...
ein string ist ein array, ein char array ...
gruss, d-oli
Also MFC-Like würd ich das so machen:
CString strString = "1 2 -5 -3 7 -1 -1 0 Text";
CString strTemp;
CStringArray arr;
int pos;
pos = strString.Find("\t");
while (pos != -1)
{
strTemp = strString.Left(pos);
if (CheckIfNumber(strTemp))
arr.Add(strString);
strString = strString.Mid(pos+1);
pos = strString.Find("\t");
}
Dann brauchst du noch die Funktion:
BOOL CheckIfNumber(CString strString)
{
TCHAR strTemp;
for (int ii=0;ii {
strTemp = strString[ii];
if (!isdigit(strTemp) && !(strTemp == '-'))
return FALSE;
}
return TRUE;
}
Hoffe das funzt. Hab hier keine Entwicklungsumgebung
zum auftrennen verwendest du sinnvollerweise nichts selbstgemachtes sondern 'strtok'. danach hast du lauter einzelne tokens die du mit atoi (keine fehlercodes) oder strtol() (mit fehlercodes) in integer umwandeln kannst.
WM_HOPETHISHELPS