Bonjour à tous !

Je veux lire un fichier texte de la manière la plus élégamment cépluplussienne, tout en évitant des memcpy superflus.

En gros, j'aimerais une boucle qui à chaque tour, renseigne une string avec la ligne suivante lue dans le fichier.

Tout ce que j'ai trouvé c'est :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
void work_with_string ( const string & s ) ;
 
void read_file ( string filename )
    {
    ifstream file( filename ) ;
    if (!file.good()) return ;
    while (!file.eof())
        {
        char sline [100] ;
        file.getline( sline,sizeof( sline )) ;
        string line = sline ; // <------  memcpy !!!!
        work_with_string( line ) ;
        }
    }
Et en plus, je suis obligé de connaître un majorant de la longueur des lignes !

Et si je fais file >> line ; j'obtiens des chaînes découpées au niveau des espaces (et non des EOL).

D'où ma question : il y a-t-il un moyen propre, et néanmoins sans memcpy, de lire les lignes d'un fichier texte dans des string ?

Merci d'avance !