Originariamente inviato da shodan
Tempo fa (se non ricordo male) dicevi di avere un file enorme di questi dati. Il mio era solo un suggerimento per gestitlo meglio.
Per il tuo problema specifico esistono almeno due modi in C++.
Il primo è usare uno stringstream:
codice:
stringstream little_parser(line_of_numbers);
int num1;
int num2;
int num3;
int num4;
int num5;
char c; // per estrarre la virgola.
little_parser >> num1 >> c >> num2 >> c >> num3 >> c >> num4 >> c >> num5;
Il secondo è usare (come è stato suggerito) le funzioni base di std::string (la find_last_of() in questo caso), estrarre la sottostringa e convertirla in numero.
Questo è il tentativo della sua implementazione nel mio cod ma...
codice:
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
#define LINEE 500
int main()
{
//APRI IL FILE E LEGGI SOLO LE PRIME 18 RIGHE...
string line;
ifstream testo;
ofstream fout;
fout.open("PRIME-500-RIGHE.txt", ios::app);
testo.open("ESTRAZIONI-BARI-ULTIME-515.txt");
if (testo.is_open())
{cout << "Le VOLUTE righe scelte:\n\n";
for (int i=0;i<500;i++)
{
getline (testo,line);
cout << line << endl;
//scrivo su file...
string datiscelti= line;
//stringstream little_parser(line_of_numbers);
stringstream little_parser(line);
int num1;
int num2;
int num3;
int num4;
int num5;
char c; // per estrarre la virgola.
little_parser >> num1 >> c >> num2 >> c >> num3 >> c >> num4 >> c >> num5;
fout << datiscelti;
//fout << "";
fout << "\n";
//----------------------------------------------------------
}
}
}
ma...
mi da sempre questo errore:
prova-split-5-files-1-ESTRAPOLA-PRIME-500-RIGHE-NO-STOP-OK.cpp In function `int main()':
e...
questo:
prova-split-5-files-1-ESTRAPOLA-PRIME-500-RIGHE-NO-STOP-OK.cpp variable `std::stringstream little_parser' has initializer but incomplete type