[Boost.Tokenizer] Utiliser le caractère de séparation NULL
Bonjour,
Durant mon projet, j'aurais besoin de séparer une multistring (tableau de char, instauré par Microsoft, représentant plusieurs chaînes de caractères séparées par un caractère NULL, selon : "String1\0String2\0String3\00" [deux caractères NULL finaux]) en plusieurs strings. J'ai donc pensé à boost::tokenizer, mais en faisant le test suivant :
Code:
1 2 3 4 5 6 7
| //#define MAX_PATH 260
char temp[MAX_PATH] = "YOUHOU;\0SALUT\0TOP";
boost::tokenizer<boost::char_separator<char> > tok(std::string(temp), boost::char_separator<char>("\0"));
for (boost::tokenizer<boost::char_separator<char> >::const_iterator i = tok.begin(); i != tok.end(); ++i )
MessageBox(hwnd, i->c_str(), "Test", MB_ICONINFORMATION); |
Je n'ai que la première string, ce qui paraît logique du fait que le caractère NULL finit en principe les strings.
Seulement voilà, je dois faire cette séparation, et j'aimerais vraiment utiliser Boost.Tokenizer pour cela (j'aurais aussi l'alternative STL avec des istream_iterator<>, mais je risque d'avoir le même problème) ; par conséquent, sauriez-vous comment remédier à ce problème (une astuce quelconque) ?
Merci d'avance.
correction d'une coquille dans le code
Reste peut être alors la méthode "bourine"...
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
|
size_t i=0;
std::string str;
std::vector<std::string> tab;
while(ms[i]!='\0' && ms[i+1]!='\0')
{
str+=ms[i];
if (ms[i]='\0')
{
tab.push_back(str);
str="";
}
++i;
} |