Bonsoir à tous.
Je m'amuse à écrire un petit programme pour évaluer des expressions arithmétiques écrite en notation polonaises. Les expressions sont contenues dans un fichier. Une ligne = une expression.
La première tâche que j'éffectue est de récupérer une expression depuis le fichier et d'en identifier les différents facteurs. J'utilise à cet effet les classes std::string et std::istringstream.
J'arrive à identiifer les éléments de la première ligne, mais après je n'arrive pas à faire de même pour les autres lignes.
Voici le code.
Code C++ : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <iostream>
#include <sstream>
#include <string>
 
using namespace std;
 
int main()
{
    string buffer;
    string item;
    istringstream ss;
    int i = 1;
 
    while(getline(cin, buffer)) {
        cout << "line " << i << endl;
        cout << buffer << endl;
        ss.str(buffer);
        while(ss >> item)
            cout << item << endl;
        i++;
    }
 
    return 0;
}
Voici le contenu du fichier de test
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
+ 3 4
- x x
* - 6 + x
Et j'obtiens comme résultat
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
line 1
+ 3 4
+
3
4
line 2
- x x
line 3
* - 6 + x