Pour que vous puissiez faire quelque chose comme ceci, par exemple: qui nécessite normalement la chaîne de formatée "01 22 42 18" code>.
Pouvez-vous modifier directement les paramètres locaux actuels? P> P>
4 Réponses :
Jetez un coup d'œil à scanf et FSCANF . Vous pourriez * être capable de faire quelque chose comme ceci: * cavalier: ça a été un moment pour moi et C ++ P> P>
Droite, à l'aide de C code> scanf code> au lieu de C ++ 'S IStream :: opérateur >> code> est vraiment beaucoup plus facile. Vous avez peut-être pu dire
sscanf (A.C_STR (), "% D:% D:% d.% D", & h, & m, & s, & f) == 4 code> cependant.
Merci, c'est une solution pratique.
@ephemient Ya, c'est celui. Comme je l'ai dit, cela fait longtemps que j'ai touché n'importe quel C / C ++ @Henle si c'est votre solution, puis le marquez comme le compagnon de réponse;)
Ok, Justin, puisque tu les demandes bien, mais les autres suggestions étaient bonnes aussi bien! ;)
char c; if (!(ss >> h >> c) || c != ':') return; if (!(ss >> m >> c) || c != ':') return; if (!(ss >> s >> c) || c != '.') return; if (!(ss >> f) || ss >> c) return;
Je ne pense pas que vous puissiez changer le délimiteur par défaut sans créer de nouveaux paramètres locaux, mais cela semble piraté. Ce que vous pouvez utiliser, c'est utiliser getline avec un troisième paramètre spécifiant le délimiteur caractère ou vous pouvez lire les délimiteurs et ne rien faire avec eux (par exemple, SS >> H >> D >> M >> D >> S >> D >> F). p>
Vous pouvez également écrire votre propre classe d'analyse qui gère des cordes fractionnées pour vous. Ou mieux encore, utilisez Boost :: Split < / a> de Boost's bibliothèque d'algorithmes de chaîne . < / p>
la chose agaçante avec boost :: Split code> et
GetLine code> est que vous devez diviser les chaînes, puis les nourrir dans un flux pour obtenir les entiers
Vous pouvez utiliser boost :: Split code> pour transformer le
std :: string code> dans un
std :: vecteur
std :: transformez code> avec
boost :: lexical_cast code> pour transformer le
std :: vecteur
STD: : Vector
Vous pouvez le faire en créant un paramètre local avec un classificateur de facette CTYpe : code> comme blancheur. p>
Merci, ce serait la réponse littérale à ma question! Bien que j'essaye de comprendre si vous pouvez simplement faire un RC [':'] = STD :: CTYPE_BASE :: espace; Sans créer de tout nouveau local ...
Malheureusement, puisque iOS_BASE classe des personnages comme WhitSpace basé sur les paramètres régionaux imprécis, je ne pense pas qu'il y ait d'autres options. Suggestion de Firas de Boost de Boost :: Split (ou, Alternativement, Boost :: Tokenizer) est probablement votre prochain meilleur choix.
Je suppose que tu ne peux pas le faire. Question intéressante si +1