Remplacer entrée/sortie par un string
sebastien61
Messages postés
495
Date d'inscription
Statut
Membre
Dernière intervention
-
sebastien61 Messages postés 495 Date d'inscription Statut Membre Dernière intervention -
sebastien61 Messages postés 495 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Mon probleme est le suivant : J'utilise une libairie (ANTLR) qui s'utiliser de la facon suivante :
./main < entreeClavier. le code du main est la suivant :
Seulement je souhaiterai utiliser cette librairie sans avoir besoin d'écrire un fichier temporaire et de le lire & de faire la liaison a l'aide d'un script python (par exemple). Je souhaiterai utliser directement dans mon programme les TagsLexer & TokenBuffer & TagsParser .
Seulement voilà, je ne vois pas comment "remplacer le cin par un simple string sans impliquer de modification dans le code de la librairie. J'ai la possibilité de modifier les classes TagsLexer et TagsParser et de les recompiler sans probleme.
Est-ce que quelqu'un pourrait m'éclairer svp ?
Merci d'avance.
Mon probleme est le suivant : J'utilise une libairie (ANTLR) qui s'utiliser de la facon suivante :
./main < entreeClavier. le code du main est la suivant :
TagsLexer lexer(std::cin); TokenBuffer buffer(lexer); TagsParser parser(buffer);
Seulement je souhaiterai utiliser cette librairie sans avoir besoin d'écrire un fichier temporaire et de le lire & de faire la liaison a l'aide d'un script python (par exemple). Je souhaiterai utliser directement dans mon programme les TagsLexer & TokenBuffer & TagsParser .
Seulement voilà, je ne vois pas comment "remplacer le cin par un simple string sans impliquer de modification dans le code de la librairie. J'ai la possibilité de modifier les classes TagsLexer et TagsParser et de les recompiler sans probleme.
Est-ce que quelqu'un pourrait m'éclairer svp ?
Merci d'avance.
A voir également:
- Remplacer entrée/sortie par un string
- Remplacer disque dur par ssd - Guide
- Remettre un pc en sortie d'usine - Guide
- Remplacer par word - Guide
- Remplacer coco - Accueil - Réseaux sociaux
- Airpods 3 date de sortie - Guide
2 réponses
tu peux peut être tenter d'utiliser les flux de string ( https://en.cppreference.com/w/cpp/io/basic_stringstream ) à la place de std::cin (mais je doute que ça fonctionne car le buffer doit être gérer différemment).
Sinon, à la place de cin, tu fourni un flux sur un fichier que tu remplis dans ton programme principal.
Peut être en utilisant une fonction similaire à pipe() en C pour créer le fichier ( http://www.linux-kheops.com/doc/man/manfr/man-html-0.9/man2/pipe.2.html ).
J'ai déjà eu des problèmes similaire, j'ai mis du temps à les résoudre. Bonne chance.
Sinon, à la place de cin, tu fourni un flux sur un fichier que tu remplis dans ton programme principal.
Peut être en utilisant une fonction similaire à pipe() en C pour créer le fichier ( http://www.linux-kheops.com/doc/man/manfr/man-html-0.9/man2/pipe.2.html ).
J'ai déjà eu des problèmes similaire, j'ai mis du temps à les résoudre. Bonne chance.