PDA

Visualizza la versione completa : [C++] Modificare una string


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

shodan
04-10-2010, 00:44
Se il problema sono gli spazi puoi risolvere con:


string token;

getline(cin,token);
while (token.compare(terminator) != 0)
{
outputVector.push_back(token);
getline(cin,token);
}

Ippo343
04-10-2010, 00:59
No, il problema è che devo vedere se una string inizia o finisce con una parentesi, chiusa o aperta, e separarla in 2 string di conseguenza.

Esempio, "(35" deve diventare "(" e "35", mentre
"121)" deve diventare "121" e ")".

Loading