Lire un fichier .dat comme input de programme c++

Signaler
Messages postés
8
Date d'inscription
mardi 24 novembre 2009
Statut
Membre
Dernière intervention
3 décembre 2009
-
Messages postés
3840
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
11 juin 2021
-
Hello,

On me dit qu il est possible (en c++) qu un programme: nom01.cpp lise son input depuis un fichier nom02.dat...

il suffit d inclure au début du programme ./nom01<nom02.dat

ben ca marche pas... ou j ai pas compris..

si vous avez une idée..
Merci!

3 réponses

Messages postés
3840
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
11 juin 2021
121
il suffit d inclure au début du programme ./nom01<nom02.dat

Ce n'est pas à inclure au début du programme, mais en ligne de commande, sous Unix (cette syntaxe ne fonctionne pas sous Windows).
Sous Unix, tu peux lancer un programme comme ceci: ./programme
Tu peux ensuite lui donner des choses en entrée, au lieu de les taper. La seule condition est que le programme sache lire une entrée (via std::cin).

Deux manières:
cat fichier | ./programme

OU
./programme < fichier
Messages postés
8
Date d'inscription
mardi 24 novembre 2009
Statut
Membre
Dernière intervention
3 décembre 2009

Merci!

Ca marche mais je crois pas encore avoir bien compris le fonctionnement du programme ou j ai besoin de ca... bref je vais encore regarder.

mais merci!
Messages postés
3840
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
11 juin 2021
121
C'est très pratique quand tu veux faire des binaires qui agissent sur une sortie.

Je te donne un exemple tout bête: Tu veux réaliser un programme qui lorsque tu lui donnes une sortie, numérote les lignes.

Voici le programme:

catline.cc
include 

int main()
{
  std::string line;
  int nb = 0;

  while (std::getline(std::cin, line))
    std::cout << ++nb << ": " << line << std::endl;

  return 0;
}


Compilé avec:
g++ -W -Wall -Wabi -pedantic catline.cc -o catline


Maintenant si je lance ce binaire, et que j'écris des choses (CTRL + D pour arrêter), alors ça ajoute un "1: " devant.
Pas très utile.

Mais pour une sortie, ça peut l'être:
Exemple:
Tu dois connaitre la commande "cat" qui permet d'afficher sur le terminal le contenu d'un fichier.
Si je chaîne cat et mon exécutable, alors je peux numéroter toutes les lignes de la sortie précédentes.
Exemple:
cat catline.cc | ./catline

Me renverra:


1: #include
2:
3: int main()
4: {
5: std::string line;
6: int nb = 0;
7:
8: while (std::getline(std::cin, line))
9: std::cout << ++nb << ": " << line << std::endl;
10:
11: return 0;
12: }


Voilà, tu vois ça peut servir !
(PS: A noter que cette fonction existe déjà, c'est "cat -n")