Ippo343
04-10-2010, 00:35
Ciao a tutti,
ho un piccolo problema con le string.
Il mio programma legge da tastiera un'espressione matematica. L'idea più semplice che mi è venuta è stata:
string token;
cin >> token;
while (token.compare(terminator) != 0)
{
outputVector.push_back(token);
cin >> token;
}
Il che funziona piuttosto bene. Il problema è che se io scrivo "(3 + 4)", con questo metodo viene diviso in 3 string:
(3
+
4)
Il che naturalmente non è bello...
In pratica dovrei prendere una string del tipo (xxx) e riuscire ad aggiungere al vettore la parentesi (se c'è), la parte centrale, e la parentesi finale (se c'è).
In realtà ovviamente ce ne sarà sempre e solo una, però così può gestire entrambi i casi.
Ho provato a scrivere un pezzettino di codice che avrebbe anche funzionato in teoria, ma il tutto si è infranto miseramente contro il fatto che string::c_str() ritorna un CONST char*, che quindi non posso modificare.
In ogni caso, sento che questa soluzione non è elegante, ci deve essere qualcosa di meglio... (parlo anche proprio della fase di lettura).
Avete qualche suggerimento? :(
ho un piccolo problema con le string.
Il mio programma legge da tastiera un'espressione matematica. L'idea più semplice che mi è venuta è stata:
string token;
cin >> token;
while (token.compare(terminator) != 0)
{
outputVector.push_back(token);
cin >> token;
}
Il che funziona piuttosto bene. Il problema è che se io scrivo "(3 + 4)", con questo metodo viene diviso in 3 string:
(3
+
4)
Il che naturalmente non è bello...
In pratica dovrei prendere una string del tipo (xxx) e riuscire ad aggiungere al vettore la parentesi (se c'è), la parte centrale, e la parentesi finale (se c'è).
In realtà ovviamente ce ne sarà sempre e solo una, però così può gestire entrambi i casi.
Ho provato a scrivere un pezzettino di codice che avrebbe anche funzionato in teoria, ma il tutto si è infranto miseramente contro il fatto che string::c_str() ritorna un CONST char*, che quindi non posso modificare.
In ogni caso, sento che questa soluzione non è elegante, ci deve essere qualcosa di meglio... (parlo anche proprio della fase di lettura).
Avete qualche suggerimento? :(