Maison >développement back-end >C++ >Pouvez-vous accéder directement à une ligne spécifique dans un fichier texte à l'aide de C fstream ?

Pouvez-vous accéder directement à une ligne spécifique dans un fichier texte à l'aide de C fstream ?

Patricia Arquette
Patricia Arquetteoriginal
2024-11-01 12:58:29763parcourir

Can You Directly Jump to a Specific Line in a Text File Using C   fstream?

Recherche d'une ligne spécifique dans un fichier texte avec C

Avec la bibliothèque fstream en C, il devient pratique de lire et d'écrire dans des fichiers texte . Cependant, accéder directement à une ligne spécifique peut être difficile. Cette question explore une solution potentielle à ce problème.

Problème :

Si un fichier texte est ouvert à l'aide de fstream, existe-t-il un moyen simple d'accéder à une ligne particulière , comme la ligne 8 ?

Réponse :

Bien que fstream fournisse un moyen de définir le pointeur de recherche du fichier, il ne permet pas directement de passer à une ligne spécifique . Une approche pratique consiste à parcourir le fichier en ignorant toutes les lignes jusqu'à ce que la ligne souhaitée soit atteinte. Voici comment cela peut être réalisé :

<code class="cpp">std::fstream& GotoLine(std::fstream& file, unsigned int num) {
    file.seekg(std::ios::beg);
    for (int i = 0; i < num - 1; ++i) {
        file.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
    }
    return file;
}</code>

Cette fonction prend le fichier et le numéro de ligne qu'elle doit rechercher et renvoie l'objet fichier.

Exemple :

Considérons un fichier texte avec le contenu suivant :

1
2
3
4
5
6
7
8
9
10

Le programme C suivant montre comment utiliser la fonction GotoLine :

<code class="cpp">int main() {
    using namespace std;
    fstream file("bla.txt");

    GotoLine(file, 8);

    string line8;
    file >> line8;

    cout << line8;
    cin.get();
    return 0;
}</code>

Sortie :

8

Dans cet exemple, le programme lit la huitième ligne du fichier texte et imprime le contenu, qui est "8".

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn