Possible en double:
How do I tokenize a string in C++?Essayer de tokenizer une chaîne
Je possède ce fichier texte
q1 t q2
q2 e q3
q3 x q4
q4 t q5 q6 q11
q5 | q6 q11
Je veux extraire chaque élément qui est séparé par un espace . Par exemple, dans la première ligne je veux être capable d'extraire "q1" "t" et "q2" comme des jetons séparés.
Je pense qu'il ya deux façons d'aller sur ce
lecture du fichier, jeton par jeton, en utilisant ifstream >>. Le problème que j'ai avec cette approche est que je ne sais pas comment dire quand la fin d'une ligne a été atteinte pour que je puisse passer à la ligne suivante.
L'autre approche consiste à obtenir la ligne entière à la fois avec getline(); Le problème avec cette approche est que je dois scinder la chaîne moi-même, et chaque ligne est différente, donc je ne suis pas sûr que ce soit la meilleure idée. Je suis assez époustouflé, il n'y a pas de manière construite pour le faire, en plus de strtok() qui semble ne pas être du tout ce que je veux. Merci les gars toute aide est appréciée.
Alors voulez-vous un tableau linéaire géant contenant tous les jetons dans le fichier? Si c'est le cas, le premier fonctionne bien, et peut être augmenté avec le constructeur de 'std :: vector' en prenant deux itérateurs. – chris
Si vous êtes des jetons aussi bien séparés par des espaces (y compris des sauts de ligne), 'while (fs >> str)' fonctionnera totalement pour vous. – WhozCraig
Soit vos nouvelles lignes ont une signification. Ensuite, allez 'getline()' et alimentez la ligne par une chaîne de caractères pour obtenir des jetons. Ou bien vos newlines * n'ont pas de sens, alors la lecture de 'ifstream' les ignorera comme n'importe quel autre espace. – DevSolar