Programmieren - alles kontrollieren 4.940 Themen, 20.676 Beiträge

String trennen ....

Danni_KA / 3 Antworten / Baumansicht Nickles

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

bei Antwort benachrichtigen
d-oli Danni_KA „String trennen ....“
Optionen

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 ++ )
{
&nbsp &nbsp &nbsp if( ( TheString[ i ] >= '0' ) && ( TheString[ i ] &nbsp &nbsp &nbsp {
&nbsp &nbsp &nbsp &nbsp &nbsp &nbsp TheResult[ j ] = TheString[ i ];
&nbsp &nbsp &nbsp &nbsp &nbsp &nbsp j ++;
&nbsp &nbsp &nbsp }
}
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

Konstruktive Kritik zeichnet sich dadurch aus, dass sie höflich, nützlich und sachlich ist.
bei Antwort benachrichtigen
Enrico_Horn Danni_KA „String trennen ....“
Optionen

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

bei Antwort benachrichtigen
thomas woelfer Danni_KA „String trennen ....“
Optionen

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

this posting contains no tpyos.
bei Antwort benachrichtigen