Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1
    Utente di HTML.it L'avatar di freetom
    Registrato dal
    Nov 2001
    Messaggi
    3,725

    [c++] Come trasformare una stringa in un vector?

    Ho una stringa del tipo:
    codice:
    string stringa = "A,B,C,D,E,F";
    la vorrei scomporre in singoli elementi di un vector relativo del tipo
    codice:
    vector <string> elementidistringa = (A,B,C,D,E,F);
    Esiste in c++ qualcosa di comodo... tipo splice... di php?
    Altrimenti come posso ottenere lo stesso risultato?

    tnx


  2. #2
    tu hai un bisogno del questo?

    codice:
    /**
     * String to Vector Tutorial by Dennis M.
     *
     * un tutorial di microsonic.org
     *
     */
    
    // Include files ~ Includere i file
    #include <string>
    #include <iostream>
    #include <vector>
    
    using namespace std;
    
    int main()
    {
    	// Declare Variables ~ Definire i varibili
    	string data = "one - uno";
    	vector<string> vect;
    
    	// Insert data into vector ~ Inserire l'informazione in il vector
    	vect.push_back(data);
    	data = "two - due";
    	vect.push_back(data);
    	data = "three - tre";
    	vect.push_back(data);
    
    	// Loop to view the contents of the vector ~ Loop per vedere i contenti di il vector
    	for(unsigned int i=0;i<vect.size();i++){
    		cout<< i << ": " << vect.at(i) << endl;
    	}
    
    	// Memory Management ~ Ci sicuriamo la memoria!
    	vect.clear();
    
    	return 0;
    }
    buon?

    Ciao,
    Dennis M.
    Nuovo Blog di Programmazione! (Lo ha i tutti tipi! PHP e C/C++)
    Per piacere lo supporti!

  3. #3
    Utente di HTML.it L'avatar di freetom
    Registrato dal
    Nov 2001
    Messaggi
    3,725

    non proprio.. dennis

    Così mettiamo solo le stringhe nell'array mentre io dovrei separare gli elementi della stringa che sono separati a loro volta dalla virgola...

    Riprendendo il tuo es. dennis dovrei ottenere:

    0ne
    1:two
    2:three
    3:for
    4:five
    ecc...

    ovvero gli elementi che in questo caso sono separati da " - " nel tuo es.

    Grazie comunque amico


  4. #4
    oh! semplice

    cambi
    codice:
    	// Insert data into vector ~ Inserire l'informazione in il vector
    	vect.push_back(data);
    	data = "two";
    	vect.push_back(data);
    	data = "three";
    	vect.push_back(data);
    
    	// Loop to view the contents of the vector ~ Loop per vedere i contenti di il vector
    	for(unsigned int i=0;i<vect.size();i++){
    		cout<< i << ":" << vect.at(i) << endl;
    	}
    si deve cambiere solo la data nella stringa (il varibile "data")

    Ciao,
    Dennis M.
    Nuovo Blog di Programmazione! (Lo ha i tutti tipi! PHP e C/C++)
    Per piacere lo supporti!

  5. #5
    Utente di HTML.it L'avatar di Metflar
    Registrato dal
    Apr 2007
    Messaggi
    790
    vuoi fare uno split, in questo link http://oopweb.com/CPP/Documents/CPPH...g-HOWTO-7.html c'è un esempio ad un certo punto però nn l'ho testato
    conoscenze: C/C++, Java, PHP, Python
    [No PM tecnici o di qualsiasi genere]

  6. #6
    Utente di HTML.it L'avatar di freetom
    Registrato dal
    Nov 2001
    Messaggi
    3,725

    forse è proprio la funzione che cerco... ma...

    Originariamente inviato da Metflar
    vuoi fare uno split, in questo link http://oopweb.com/CPP/Documents/CPPH...g-HOWTO-7.html c'è un esempio ad un certo punto però nn l'ho testato
    continua a darmi questo errore...

    6 C:\Documents and Settings\tommy\Desktop\forseok.cpp expected `,' or `...' before '&' token

    se faccio come dice.. non mi riconosce + string e mi dice:

    6 C:\Documents and Settings\tommy\Desktop\forseok.cpp `string' has not been declared

    insomma nn la finisce +... VVoVe:

    Grazie comunque Metflar


  7. #7
    Utente di HTML.it L'avatar di freetom
    Registrato dal
    Nov 2001
    Messaggi
    3,725

    no no :)

    Originariamente inviato da DennisM
    oh! semplice

    cambi
    codice:
    	// Insert data into vector ~ Inserire l'informazione in il vector
    	vect.push_back(data);
    	data = "two";
    	vect.push_back(data);
    	data = "three";
    	vect.push_back(data);
    
    	// Loop to view the contents of the vector ~ Loop per vedere i contenti di il vector
    	for(unsigned int i=0;i<vect.size();i++){
    		cout<< i << ":" << vect.at(i) << endl;
    	}
    si deve cambiere solo la data nella stringa (il varibile "data")

    Ciao,
    Dennis M.
    Non mi interessa inserire in un vector singoli valori stringa...

    bensì:

    scomporre... una stringa del tipo "elem1,elem2,elem3" in un vector contenente i singoli elementi costituenti la stringa e separati da una virgola...
    per avere alla fine...
    vector<string> elementi = (elem1,elem2,elem3)

    Spero di essere stato + chiaro stavolta...

    comunque grazie lo stesso

  8. #8
    ah adesso penso che ti io capire :P come un delimitatore?

    codice:
    #include <string>
    #include <iostream>
    #include <vector>
    
    using namespace std;
    
    int main(){
    
    	// Originale Definizione della Stringa e i variabili
    	string data, orig = "A,B,C,D,E,F";
    	unsigned int i = 0;
    	vector<string> vect;
    
    	for(i=0;i<orig.size();i++){
    		size_t pos = orig.find(",", 0);
    		data = orig.substr(0,pos);
    		orig.erase(0,pos+1); // Prevenzione di duplicazione
    		vect.push_back(data);
    	}
    
    	for(i=0;i<vect.size();i++){
    		cout<< i << ":" << vect.at(i) << endl;
    	}
    
    	return 0;
    }
    Ciao,
    Dennis M.
    Nuovo Blog di Programmazione! (Lo ha i tutti tipi! PHP e C/C++)
    Per piacere lo supporti!

  9. #9
    Utente di HTML.it L'avatar di freetom
    Registrato dal
    Nov 2001
    Messaggi
    3,725

    adesso ci siamo! quasi...

    Nel senso che l'output dovrebbe essere secondo il tuo es.


    0: A
    1: B
    2: C
    3: D
    4: E
    5: F

    Invece almeno a me... si ferma alla D...


    0: A
    1: B
    2: C
    3: D

    E non capisco perchè...

    Comunque adesso ci siamo!
    GRAZIE davvero Dennis
    THANKS VERY MUCH Dennis

  10. #10
    No problem! Glad to help!

    non un problema io sono felice per aiutare.

    penso che lo funzionà bene.

    codice:
    #include <string>
    #include <iostream>
    #include <vector>
    
    using namespace std;
    
    int main(){
    
    	// Originale Definizione della Stringa e i variabili
    	string data, orig = "A,B,C,D,E,F,G,H,I,J,K,L,M";
    	unsigned int i = 0, set_size = orig.size()-(orig.size()/2);
    	vector<string> vect;
    
    	for(i=0;i<set_size;i++){
    		size_t pos = orig.find(",",0);
    		data = orig.substr(0,pos);
    		orig.erase(0,pos+1); // Prevenzione di duplicazione
    		vect.push_back(data);
    	}
    
    	for(i=0;i<vect.size();i++){
    		cout<< i << ":" << vect.at(i) << endl;
    	}
    
    	return 0;
    }
    ho definito il variabile "set_size" di unsigned int cosi lo è statico e non dynamico.

    vedi la linea che segua
    codice:
    orig.erase(0,pos+1); // Prevenzione di duplicazione
    quando orig.size() era in il loop lo era dynamico.

    Ciao,
    Dennis M.
    Nuovo Blog di Programmazione! (Lo ha i tutti tipi! PHP e C/C++)
    Per piacere lo supporti!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.