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   -
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 :
		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:

2 réponses

Char Snipeur Messages postés 10112 Date d'inscription   Statut Contributeur Dernière intervention   1 299
 
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.
0
sebastien61 Messages postés 495 Date d'inscription   Statut Membre Dernière intervention   59
 
Dac, je te remercie, je vais tester ça.
0