Maison >développement back-end >C++ >Comment accéder directement à une ligne spécifique dans un fichier texte en utilisant C ?

Comment accéder directement à une ligne spécifique dans un fichier texte en utilisant C ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-11-06 07:13:02702parcourir

How to Directly Access a Specific Line in a Text File Using C  ?

Naviguer dans des fichiers texte en C : accéder à des lignes spécifiques

L'ouverture de fichiers texte avec fstream permet d'accéder au contenu du fichier. Cependant, il est parfois nécessaire de parcourir ou d'accéder à une ligne spécifique du fichier.

Naviguer vers une ligne spécifique

Pour accéder à une ligne spécifique, telle qu'une ligne 8, une méthode simple consiste à utiliser une approche basée sur une boucle :

<code class="cpp">#include <fstream>
#include <limits>

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 un flux de fichier et un numéro de ligne comme paramètres. Il définit le pointeur de recherche du fichier au début de la ligne spécifiée.

Comprendre le code

  1. file.seekg(std::ios:: beg); : définit le pointeur de recherche sur le début du fichier.
  2. for (int i = 0; i < num - 1; i){ : parcourt chaque ligne jusqu'au numéro de ligne souhaité.
  3. file.ignore(std::numeric_limits::max(), 'n'); : consomme et supprime les caractères jusqu'à ce qu'une nouvelle ligne soit trouvée ou que le flux se termine.
  4. Après avoir terminé la boucle, le pointeur de recherche est positionné au début de la ligne spécifiée.

Exemple d'utilisation

Pour tester cette approche, considérons un fichier texte avec le contenu suivant :

1
2
3
4
5
6
7
8
9
10

Le programme suivant montre comment accéder à la ligne 8 :

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

    GotoLine(file, 8);

    string line8;
    file >> line8;

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

En utilisant cette méthode, vous pouvez facilement accéder à une ligne spécifique dans un fichier texte. Cette approche est particulièrement utile lorsqu'il s'agit de fichiers volumineux ou lorsqu'il faut accéder à des informations spécifiques sans analyser l'intégralité du fichier.

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