2010-08-24 3 views
0

Je dispose d'un fichier avec des enregistrements qui ressemble à ceciiostream - chaîne de lecture avec des blancs intégrés

123 Tag Il est maintenant temps pour tous les hommes à venir à l'aide

Il y avait toujours un numéro et une étiquette suivi d'une série de mots. Je veux extraire le nombre en entier, tag en tant que chaîne, et phrase en tant que chaîne. J'ai fait cela en utilisant getline et scan plus une folie de sous-chaîne.

Est-il possible de le faire ala ...

ispringstream iss ("123 Tag Now is the time for all good men to come to the"); 
integer i; 
string tag, sentence; 
iss >> i >> tag >> ws >> ???? >> sentence; 

à savoir Ce serait bien s'il y avait un moyen de désactiver l'espace blanc comme terminateur.

+0

est chaque entrée sur son propre ligne, ou peut plusieurs entrées être sur la même ligne? –

+0

un par ligne .... –

Répondre

1

Vous devriez être en mesure de le faire en deux étapes:

istringstream iss ("123 Tag Now is the time for all good men to come to the"); 
int i; 
std::string tag, sentence; 
iss >> i >> tag >> ws; 
std::getline(iss, sentence); 
+0

Eh bien, c'est certainement mieux que scan. Je pense aussi à récupérer la position avec iss.tellg() et à utiliser une chaîne .substr sur phrase. Je me demande si cela pourrait être fait avec un manipulateur défini par l'utilisateur? –

0

S'il n'y aura pas de sauts de ligne,

iss >> i >> tag; 
getline(iss, sentence); 
Questions connexes