Maison > développement back-end > C++ > Comment lire toutes les données de l'entrée standard jusqu'à EOF en C ?

Comment lire toutes les données de l'entrée standard jusqu'à EOF en C ?

Barbara Streisand
Libérer: 2024-11-28 21:36:12
original
597 Les gens l'ont consulté

How to Read All Data from Standard Input Until EOF in C  ?

Lecture de données à partir d'une entrée standard jusqu'à la fin du fichier en C

Lorsque vous travaillez avec des données directement à partir d'une entrée utilisateur en C, il est souvent Il est souhaitable de lire toutes les données jusqu'à ce que la fin du fichier (EOF) soit atteinte. La fonction cin.get() permet de lire des données jusqu'à ce qu'un caractère spécifié soit rencontré. Cependant, l'utilisation de « » comme caractère de fin n'est peut-être pas optimale car elle ne représente pas vraiment EOF.

Utiliser des boucles pour l'extraction de données

La solution la plus efficace pour la lecture des données jusqu'à ce que EOF implique l'utilisation de boucles. La fonction std::getline() est particulièrement adaptée à cet effet. Par défaut, getline() lit les données jusqu'à ce qu'un caractère de nouvelle ligne soit rencontré. Cependant, un caractère de fin alternatif peut être spécifié :

std::string line;
while (std::getline(std::cin, line))
{
    std::cout << line << std::endl;
}
Copier après la connexion

Dans cet exemple, getline() lit chaque ligne de données jusqu'à ce que la fin du fichier soit atteinte. La boucle se termine lorsque getline() ne parvient pas à lire d'autres données, indiquant qu'EOF a été rencontré.

Caractère de fin alternatif

Bien que EOF ne soit pas un caractère qui peut être spécifié directement, vous pouvez utiliser une valeur sentinelle pour représenter EOF. Par exemple, vous pouvez initialiser une variable à une valeur spécifique et lire les données jusqu'à ce que cette valeur soit rencontrée :

const std::string EOF_MARKER = "EOF";
std::string line;
while (getline(std::cin, line))
{
    if (line == EOF_MARKER)
        break;

    std::cout << line << std::endl;
}
Copier après la connexion

Cette approche vous permet de définir votre propre indicateur de fin de fichier, offrant une plus grande flexibilité dans votre traitement des données.

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal