À l'aide de strtok pour diviser la chaîne

 char *strings[30];
 char Policystr[4096] = "the|string|to|split"; 
 char delims[] = "|";
 int i = 0;

 strings[i] = strtok( Policystr, delims )
 while( strings[i] != NULL  ) 
{
        MessageBoxA(NULL,strings[i],"stringsComparison",MB_OK);
        strings[++i] = strtok( NULL, delims );          
}
for ( int j = 0; j < i; j++ ) 
 {
     MessageBoxA(NULL,strings[j],"strings",MB_OK);
 }

je suis novice en C++ je reçois toutes les chaînes dans la première boucle, si je suis en mesure d'imprimer le même dans la deuxième boucle, je ne sais pas j'y suis pas arriver

merci d'avance

  • MessageBoxA(NULL,strings[j],"stringsComparison",MB_OK); Qui ne peut pas être de droite. j ne change jamais dans la boucle du haut et, en fait, n'existe pas.
  • Essayez de changer strings[j] à strings[i] dans la première boucle...
  • Si vous êtes à l'aide de C++, voir si vous pouvez utiliser std::string et std::vector. Le fractionnement d'une std::string est trivial, surtout compte tenu de boost a probablement quelque chose exactement à cette fin, mais même sans boost il devrait être facile.
  • strtok() est la source de tous les maux ... Si vous voulez VRAIMENT éviter de stimuler, au moins utiliser strtok_s().
  • strtok_r pour POSIX.
  • NE PAS UTILISER STRTOK
  • NE PAS UTILISER SIMPLEMENT DES TABLEAUX DE CHAR

InformationsquelleAutor | 2012-05-09