Passaggio array da main a funzione

di il
12 risposte

Passaggio array da main a funzione

Ciao a tutti, non riesco a capire come passare un array da una funzione a main:

passaggioArray() {
    
    string mioArray[5] = {1, 2, 3, 4, 5}; 
    return mioArray;
}

main () {
    
    string altroArray[5];
    altroArray = passaggioArray();
}


non so come dichiarare passaggioArray per farmi restituire lo stesso tipo di dati.

12 Risposte

  • Re: Passaggio array da main a funzione

    Uno dei tanti modi può essere questo
    
    #include <iostream>
    #include <vector>
    #include <string>
    
    using namespace std;
    
    vector<string> passaggioArray()
    {
    	vector<string> vec;
    	vec.push_back("uno");
    	vec.push_back("due");
    	vec.push_back("tre");
    	vec.push_back("quattro");
    	vec.push_back("cinque");
    	return vec;
    }
    
    
    
    int main()
    {
    	vector<string> returnVec;
    	returnVec = passaggioArray();
    
    	vector<string>::iterator it;
    	for(it = returnVec.begin(); it != returnVec.end(); ++it)
    		cout << *it << endl;
    	return 0;
    }
    
  • Re: Passaggio array da main a funzione

    Bene sembra funzionare grazie mille. Scusa se rompo ancora ma sono approdato al c++ da veramente poco tempo e sto cercando di capire.

    se dovessi fare un ciclo for per leccere tutto il vector<string> come faccio ad ottenere il numero di elementi inseriti?
  • Re: Passaggio array da main a funzione

    ReturnVec.size() ti ritorna il numero dei elementi.
    Leggi di + quà:
    http://www.cplusplus.com/reference/stl/vector
  • Re: Passaggio array da main a funzione

    Grazie mille leggo subito
  • Re: Passaggio array da main a funzione

    Aprofitto della vostra gentilezza. ho visto che :
    
    for (int i = 0; 0 < mioArray.size(); ++i)
        cout << mioArray[i];
    
    mi stampa titti gli elementi dell'array

    nel caso io abbia una combobox in un widget qt4 con la seguente forma inserisco gli item nella combo:
    
    widget.combobox->additem("item1");
    
    per un problema di conversione non funziona la seguente forma:
    
    widget.combobox->additem(mioArray[0]);
    
    mi date qualche consiglio sulla conversione?
  • Re: Passaggio array da main a funzione

    Cosa accetta Additem?
    Se un array di char puoi usare la forma
    
    widget.combobox->additem(mioArray[0].c_str());
    
  • Re: Passaggio array da main a funzione

    Andata così funziona, devo vedermi un po le conversioni e i tipo di dati. Portate pazienza ma come vi dicevo è da poco che mi cimento con il c++, però faccio tesoro di ciò che mi spiegate e ogni nozione entra a far parte del mio bagaglio.
  • Re: Passaggio array da main a funzione

    Come vedi tutte ste cose non sono parte del C++ in se ma sono funzioni delle classi STL offerte dalle librerie standard. Infatti ti consigleri di imparare l'uso dei iterator invece di usare l'overload del operatore [].

    Nel sito che ti ho elencato ci sono le funzioni di tutte le classi base delle STL, libreria essenziale quando si vuole imparare il C++.
  • Re: Passaggio array da main a funzione

    Infatti l'ho già messo nei preferiti. Grazie
  • Re: Passaggio array da main a funzione

    Ho modificato il mio prog di prova usando iterator (che mi sto studiando su cplusplus). Non capisco perchè ho dovuto fare così:
    
    vector<string>::iterator it;
        for (it = mioArray.begin(); it != mioArray.end(); ++it){
            variabile_string = *it;
            widget.combotipo->addItem (variabile_string.c_str());
    
    se passo direttamente *it ad additem mi da errore anche con *it.c_str()
  • Re: Passaggio array da main a funzione

    Così
    
    vector<string>::iterator it;
        for (it = mioArray.begin(); it != mioArray.end(); ++it){
            widget.combotipo->addItem (it->c_str());
    
    oppure così
    
    vector<string>::iterator it;
        for (it = mioArray.begin(); it != mioArray.end(); ++it){
            widget.combotipo->addItem ((*it).c_str());
    
  • Re: Passaggio array da main a funzione

    Grazie skynet
Devi accedere o registrarti per scrivere nel forum
12 risposte