PDA

Visualizza la versione completa : [c++] Inserire valori di un txt in un vector


freetom
30-01-2010, 01:14
Ho un txt contenente una sola riga del tipo:

3,7,8,12,19,20,22,28,29,31,35,38,42,43,50,54,56,57 ,58,60,67,71,72,75,80,85,89,

dovrei inserire i singoli valori (che sono separati da virgola) in solo vector <int> numeri

ma mi sono arenato... :master: :dh˛:

Grazie infinite a chi mi da una mano a disincagliarmi... da questo sassolino...

:ciauz:

antotan
30-01-2010, 01:30
#include <vector>
#include <iostream>
#include <fstream>
#include <sstream>

using namespace std;

int main()
{
vector<int> nums;
ifstream file("text.txt");
char buffer[8];

while(file.getline(buffer, 8, ','))
{
istringstream ss(buffer);
int temp;
ss >> temp;
nums.push_back(temp);
}
}


testato su:

1,2,3,4,5,6,7,8,9,10

Ovviamente fai tutte le verifiche del caso, con quel codice pu˛ accadere di tutto.

:ciauz:

freetom
30-01-2010, 11:07
Originariamente inviato da antotan


#include <vector>
#include <iostream>
#include <fstream>
#include <sstream>

using namespace std;

int main()
{
vector<int> nums;
ifstream file("text.txt");
char buffer[8];

while(file.getline(buffer, 8, ','))
{
istringstream ss(buffer);
int temp;
ss >> temp;
nums.push_back(temp);
}
}


testato su:

1,2,3,4,5,6,7,8,9,10

Ovviamente fai tutte le verifiche del caso, con quel codice pu˛ accadere di tutto.

:ciauz:



Non riesco a capire come mai...
risolto questo problema ne sorge un altro... forse legato al primo ecco perchŔ lo posto qui...





cout << "NUMERO COMBINAZIONI FINALI... GENERATE X QUESTA TIPOLOGIA: ";
cout << insiemecombinazioni.size();
cin.get();


ofstream foutT1;
foutT1.open("combinazioni1.txt");

cout << "\nLETTURA DI TUTTO L'INSIEME DELLE SINGOLE COMBINAZIONI SEPARATE:\n\n";
for (i=0; i<insiemecombinazioni.size()-1;i++){
cout << insiemecombinazioni[i]+"\n";
foutT1 << insiemecombinazioni[i]+"\n";
cout << "QUI CI ARRIVA...";
cin.get();
cout << "Press ENTER to continue..." << endl;
cin.get();
cout << "\n\n";
}



Dunque.. nonostante da verifica con stampa a video di tutti i passaggi... nonostante che il vector insiemecombinazioni sia popolato correttamente... nonostante il file combinazioni1.txt sia creato correttamente... e nonostante in fase di compilazione non dia alcunissimo errore... e mostri correttamente ogni singolo elemento del vector insiemecombinazioni... correttamente...

il file combinazioni1.txt alla fine risulta vuoto :dh˛:

Qualcuno/a saprebbe spiegarmi come mai? :confused:
Letto e riletto il codice mi sembra corretto in ogni suo punto
ma evidentemente mi sto sbagliando...

Grazie infinite se vedete l'errore e me lo segnalate

:ciauz:

oregon
30-01-2010, 11:10
Prima di terminare il programma chiudi il file ...

freetom
30-01-2010, 11:31
Originariamente inviato da oregon
Prima di terminare il programma chiudi il file ...


:ciauz:

antotan
30-01-2010, 11:46
cout << insiemecombinazioni[i]+"\n";
foutT1 << insiemecombinazioni[i]+"\n";


questo non ha particolarmente senso.



for (i=0; i<insiemecombinazioni.size();i++){
cout << insiemecombinazioni[i] << "\n";
foutT1 << insiemecombinazioni[i] << "\n";
}

foutT1.close();


nota i < insiemecombinazioni.size() e non insiemecombinazioni.size()-1 (devi stamparle tutte, tu saltavi l'ultima)

Loading