2010-05-04 16 views
1

Je peux lire à partir d'un fichier 1 caractère à la fois, mais comment puis-je le faire aller juste un mot à la fois? Donc, lisez jusqu'à ce qu'il y ait un espace et prenez cela comme une chaîne.lire un fichier mot par mot

Cela me obtient les personnages:

while (!fin.eof()){ 
    while (fin>> f){ 
    F.push_back (f); 
    } 
+1

Vérifiez ce post SO concernant chaîne tokens: http://stackoverflow.com/questions/53849/how-do-i-tokenize-a-string-in-c – gooch

+0

'fin.eof()' indique un échec passé; cela ne vous dit pas s'il n'y a plus d'entrée. – Potatoswatter

Répondre

3

Si votre variable f est de type std::string et F est std::vector<std::string>, votre code doit faire exactement ce que vous voulez, vous laissant avec une liste de « mots » le vecteur F. Je mets mots entre guillemets parce que la ponctuation à la fin d'un mot sera incluse dans l'entrée. En d'autres termes, l'opérateur >> s'arrête automatiquement à l'espace (ou à l'espace) lorsque le type de variable cible est une chaîne.

+0

+1, battez-moi. – rcollyer

2

Essayez ceci:

std::string word; 
while (fin >> word) 
{ 
    F.push_back(word); 
} 
Questions connexes