tommyprojects (Normal User)
Rookie
Messaggi: 29
Iscritto: 26/07/2009
|
Ad esempio...
Ho una stringa "pippo"
string "pippo";
come posso ottenere un:
vector<string>caratteridipippo;
in modo che contenga 5 elementi:
p,i,p,p,o
?
Graz
|
|
manvb.net (Member)
Guru
Messaggi: 663
Iscritto: 28/01/2008
|
Fai un ciclo in cui scorri tutti i caratteri della stringa e poi aggiungi a caratteridipippo ogni elemento ottenuto.
|
|
theprogrammer (Normal User)
Guru^2
Messaggi: 2509
Iscritto: 28/01/2009
|
Se sono semplici caratteri, e' un fatto, se sono numeri (come penso da quello che leggo su html.it ...) e' un'altra storia ...
E' meglio essere chiaro sin dall'inizio con la domanda ...
|
|
tommyprojects (Normal User)
Rookie
Messaggi: 29
Iscritto: 26/07/2009
|
Postato originariamente da manvb.net:
Fai un ciclo in cui scorri tutti i caratteri della stringa e poi aggiungi a caratteridipippo ogni elemento ottenuto. |
La seconda parte la so fare ma per la prima (..Fai un ciclo in cui scorri tutti i caratteri della stringa ..) qualche aiutino???
THANKS |
|
steve__92 (Normal User)
Rookie
Messaggi: 22
Iscritto: 14/07/2009
|
l'unico modo che mi viene in mente è appoggiandomi a un array di char (senza usare string)
ti faccio un esempio:
Codice sorgente - presumibilmente C++ |
#include <iostream> #include <vector> using namespace std; int main() { char a[30]; // al posto di usare string uso un array di char cout << "inserisci una parola: "; cin >> a; // metto la parola in input all' array di char se vuoi usare pure gli spazi devi usare cin.getline() vector <char> v; // creo un vettore di char for(int x = 0; a[x]!='\0'; x++) v.push_back(a[x]); // continuo ad aggiungere le lettere dell' array al vettore // stampo tutte le lettere (per far vedere che ha funzionato) cout << endl << endl; for(int x=0;x<v.size();x++) cout << "v[" << x << "]" << "\t" << v[x] << endl; system("pause>nul"); return 0; }
|
Ultima modifica effettuata da steve__92 il 20/08/2009 alle 21:49 |
|
manvb.net (Member)
Guru
Messaggi: 663
Iscritto: 28/01/2008
|
Postato originariamente da steve__92:
l'unico modo che mi viene in mente è appoggiandomi a un array di char (senza usare string)
ti faccio un esempio:
Codice sorgente - presumibilmente C++ |
#include <iostream> #include <vector> using namespace std; int main() { char a[30]; // al posto di usare string uso un array di char cout << "inserisci una parola: "; cin >> a; // metto la parola in input all' array di char se vuoi usare pure gli spazi devi usare cin.getline() vector <char> v; // creo un vettore di char for(int x = 0; a[x]!='\0'; x++) v.push_back(a[x]); // continuo ad aggiungere le lettere dell' array al vettore // stampo tutte le lettere (per far vedere che ha funzionato) cout << endl << endl; for(int x=0;x<v.size();x++) cout << "v[" << x << "]" << "\t" << v[x] << endl; system("pause>nul"); return 0; }
|
|
Più che array di caratteri non sarebbe meglio utilizzare un string(come richiesta dallo starter del topic)? |
|
steve__92 (Normal User)
Rookie
Messaggi: 22
Iscritto: 14/07/2009
|
Postato originariamente da manvb.net:
Più che array di caratteri non sarebbe meglio utilizzare un string(come richiesta dallo starter del topic)? |
ottimo! non sapevo che gli string si potessero trattare come fossero array... grazie per la dritta! mi sarà sicuramente utile in futuro.
il codice di esempio diventa così:
Codice sorgente - presumibilmente C++ |
#include <iostream> #include <string> #include <vector> using namespace std; int main() { string a; // gli string si possono usare come fossero array cout << "inserisci una parola: "; cin >> a; // metto la parola in input all' array di char se vuoi usare pure gli spazi devi usare cin.getline() vector <char> v; // creo un vettore di char for(int x = 0; a[x]!='\0'; x++) v.push_back(a[x]); // continuo ad aggiungere le lettere dell' array al vettore (finche trovo '\0') // stampo tutte le lettere (per far vedere che ha funzionato) cout << endl << endl; for(int x=0;x<v.size();x++) cout << "v[" << x << "]" << "\t" << v[x] << endl; system("pause>nul"); // <-- da aggiungere se non lo vuoi far partire da prompt e usi windows return 0; }
|
Ultima modifica effettuata da steve__92 il 21/08/2009 alle 0:30 |
|
tommyprojects (Normal User)
Rookie
Messaggi: 29
Iscritto: 26/07/2009
|
scusate il ritardo nella risposta ma ho avuto da fare e mi sono otuto ricollegare solo adesso con una penna adsl dalla campagna
dunque per tornare a noi...grazie innanzi tutto per tutti gli apporti e poi... l'ultimo cod funzia alla grande solo che a me servirebbe unificare in un unico elemento (numero) i due elementi separati che ne risultano...
cerco di spiegarmi meglio...
se ho una stringa... 11,12,13,14,15,16,17,18,19,20 l'ultimo cod postato mi crea regolarmente:
vec[0]=1
vec[1]=1
vec[2]=,
vec[3=1
vec[4]=2
vec[5]=,
ecc...
mentre a me servirebbe ottenere:
vec[0]=11
vec[1]=12
ecc...
altrimenit il confronto tra numeri successivo.. mi risulta impossibile...
Grazie comunque e rimango in ascolto...
Io per adesso avrei provato così...
Codice sorgente - presumibilmente Delphi |
for(int x = 0; vec[z][x]!='\0'; x++) vv.push_back(vec[z][x]); // continuo ad aggiungere le lettere dell' array al vettore (finche trovo '\0') // stampo tutte le lettere (per far vedere che ha funzionato) cout << endl << endl; for(int x=0;x<vv.size();x++) cout << "v[" << x << "]" << "\t" << vv[x] << endl; system("pause>nul"); // <-- da aggiungere se non lo vuoi far partire da prompt e usi windows //return 0; //prova unione caratteri 2 a 2 ... char elem1[50], elem2[50]; string una=vec[z][x]; string due=vec[z+1][x]; strcpy(elem1, una); strcpy(elem2, due); str uniti = strcat(elem1, elem2); cout << "Si sono uniti?\n"; cout << uniti; cout << "\n";
|
ma mi da sempre questo errore:
138 C:\Documents and Settings\tommy\versione32-d.cpp name lookup of `x' changed for new ISO `for' scoping
Ultima modifica effettuata da tommyprojects il 23/08/2009 alle 17:11 |
|