2011-06-02 2 views
0

J'implémente un programme en utilisant C++, et j'ai un problème d'obtenir la ligne suivante à partir d'un fichier d'entrée. Je:Comment obtenir la ligne suivante à partir d'un fichier

const MAX 300; 
    char oneline[MAX]; 
    ifstream in; 
    in.open("input.txt); 
    in.getline(oneline,MAX); 

La fonction getline me obtient toujours la première ligne dans le fichier. La chose est, comment puis-je obtenir la ligne suivante dans le fichier?

+3

Appelez getline à nouveau? –

+0

ne fonctionne pas, j'ai essayé – Anon

+0

Afficher plus de code puis. Je ne peux pas reproduire votre problème chaque fois que j'appelle 'getline', j'obtiens la ligne suivante. (Pour être juste, je n'ai jamais utilisé 'getline' que pour obtenir un' std :: string'. Dans votre code, si votre ligne dépasse 300 caractères, vous n'obtiendrez que les 300 premiers dans le premier appelez, les 300 suivants dans le suivant, et ainsi de suite.) –

Répondre

4
std::string line;  
while(in.good()) 
{ 
    getline(in, line); 

    //do something with line 
} 

Puisque vous utilisez C++, vous devriez utiliser std :: string pour lire vos lignes.

+2

Non. Vous devriez utiliser 'std :: string' * peu importe * si vous avez une raison de limiter vos lignes à un certain nombre de caractères. –

+0

no ther n'est pas une raison spécifique mais cette boucle tout va obtenir les lignes suivantes dans le fichier d'entrée ?? – Anon

+0

Oui, la boucle lit chaque ligne dans la chaîne 'line'. Ensuite, vous devez faire quelque chose avec ça. – juanchopanza

1
while (getline(in,line,'\n')){ 
    //do something with line 
} 
+1

Vous n'avez pas besoin du dernier argument de 'getline'; c'est la valeur par défaut (et si vous utilisez autre chose, la fonction est mal nommée :-)). –

Questions connexes