PDA

View Full Version : [C++] Che funzione per leggere solo una parte di stringa?


Tubo Catodico
17-11-2008, 10:46
Le cose stanno cosė:
una serie di valori interi vengono letti su di una stringa (sono separati da uno spazio). Necessito di memorizzarli su delle variabili locali intere per farci dei conti. Per la conversione stringa->intero pensavo di usare atoi, passando come argomento non l'intera stringa ma solo la parte relativa ad un singolo intero. Come parzializzo la selezione di una stringa? Nel senso la stringa tot mi interessa dal carattere numero 9 al carattere numero 11.

Grazie in anticipo per la risposta ;)

PhysX
17-11-2008, 11:10
puoi scorrere la stringa con un iteratore:

string str ("12 15 48 456 45 15 88");
string::iterator it;
for ( it=str.begin() ; it < str.end(); it++ ) {
...
}

e per estrarre i singoli token usi questo metodo: http://www.cplusplus.com/reference/string/string/substr.html

Tubo Catodico
17-11-2008, 11:41
Grazie mille ma ho fatto con strtok() ! ;)

marco.r
17-11-2008, 12:00
un' altra alternativa e' fare qualcosa come il seguente usando lo stream da stringa:

#include <string>
#include <sstream>

using namespace std;

/* ... */

void foo()
{
int a,b,c,d,e;
string s = "1 2 3 5 5";
istringstream input( s.c_str() );
input >> a >> b >> c >> d >> e;
}

Tubo Catodico
17-11-2008, 14:38
Molto carino ed elegante come metodo. Grazie!