Leggere file e farne un altro

di il
2 risposte

Leggere file e farne un altro

Ciao a tutti...

Ho un file di questo tipo:

A01 1205
A01 1191
A01 1192
A03 1199
A03 1164
A03 1172
A02 1207
A02 1188
A02 1220
vORREI CREARE UN fILE CHE ha per ogni colonna una sola chiave presa dalla colonna 1,,cioè:
A01,A02,,,,
...,...,...
,
#include <stdio.h>
#include <stdlib.h>
#include <iostream>
#include <iostream>
#include <fstream>
#include <cstdlib>
#include <stdio.h>
#include <string>
#include <map>
#include <iterator>
using namespace std;
typedef std::pair<const KeyType, std::double> Pair
typedef std::multimap< std::string, double> MapCode;
typedef MapCode::iterator mapIter;

//information
int  main()
{
	MapCode data;
	string line;
	std::ifstream file("./src/1.csv");

	while ( file.good() )
	    {	char s;
	    	double t;
			std::getline(file,line, '\t');
			line >>s >>t ;
			std::map::insert(pair<char,double>(s,t) );
	    }
	    file.close();
Sto cercando di creare una multimap solo che non riesco a fornire i dati come li muove...potete aiutarmi perfavore!!!
grazie

2 Risposte

  • Re: Leggere file e farne un altro

    Non conosco il C++, ma non ti basterebbe leggere la prima stringa ( o tutti i caratteri prima dello spazio ) e poi andare avanti fino al carattere successivo al newline e rifare la stessa cosa fino alla fine del file?
  • Re: Leggere file e farne un altro

    Io userei un std::set solo per la chiave tanto da quel che ho capito il valore non ti serve
    
    #include <iostream>
    #include <fstream>
    #include <string>
    #include <set>
    
    using namespace std;
    
    //information
    int  main()
    {
    	set<string> chiavi;
    	string line;
    	std::ifstream file("./src/1.csv");
    
    	while ( file.good() )
    	{   
    		file >> line;
    		chiavi.insert(line);
    		file >> line;
    	}
    	file.close();
    
    	ofstream out("./src/out.csv");
    	if(out.good())
    	{
    		for (set<string>::const_iterator it = begin(chiavi); it != end(chiavi); ++it)
    		{
    			out << *it << ",";
    		}
    		out.close();
    	}
    }
    
Devi accedere o registrarti per scrivere nel forum
2 risposte