Originariamente inviato da KrOW
intanto ti consiglio di cambiare IDE/compilatore (ho perso il conto di quante volte é stata detta questa frase in riferimento al devcpp) ... Poi, potresti postare tutto il codice relativo alla scrittura su file (apertura, loop ecc...)???
codice:
// reading a complete binary file
#include <iostream>
#include <fstream>
#include <string>
#include <vector>
#include <algorithm>
#include <sstream>
#include <iomanip>
using namespace std;
ifstream::pos_type size;
char * memblock;
char * memblock2;
char * memblock3;
string intToString(char value) {
stringstream ss;
ss << value;
return ss.str();
}
int stoint( const std::string &text )
{
std::stringstream sstream;
sstream << text;
int integer;
sstream >> integer;
return integer;
}
int main () {
//APERTURA FILE TXT
ofstream fout;
fout.open("ritardi-quartine-senza-cout.txt", ios::app);
//---------------------------------------------------
vector<string>token;
string valorestringa ="";
string stringaquartina;
string stringaestrazione;
vector <string> compara;
int ritardo;
vector <int> ritardi(2);
int n;
n=0;
string stringaquartinasingola="";
string stringaestrazionesingola="";
string testo,estratta;
vector<string> token1;
vector<string> token2;
int inizio,fine,i,lparola;
bool continua;
testo = stringaestrazione;
stringaquartinasingola="";
vector<string> estrazioni;
vector<string> quartine;
vector<string> confronta;
vector<int> confrontainteri;
int occorrenza=0;
ritardo=0;
int g=0;
ifstream file2 ("estrazioni.txt", ios::in|ios::binary|ios::ate);
if (file2.is_open())
{
size = file2.tellg();
memblock2 = new char [size];
file2.seekg (0, ios::beg);
file2.read (memblock2, size);
file2.close();
for (int i=0; i<size;i++) {
//cout << memblock[i];
valorestringa = intToString(memblock2[i]);
stringaestrazione += valorestringa;
}
cout << "\n\n";
cout << "carico estrazioni in memoria...";
cout << "\n\n";
cin.get();
testo=stringaestrazione;
continua = true;
inizio = -1; /*1*/
while(continua){
fine = testo.find(',',inizio+1); /*2*/
//fine = testo.find(',',inizio+1);
// ultima parola
if(fine==-1){ /*3*/
continua = false;
fine = testo.length(); /*4*/
}
// Estrazione parola
lparola = (fine-inizio)-1; /*5*/
estratta = testo.substr(inizio+1,lparola); /*6*/
token1.push_back(estratta); /*7*/
inizio = fine; /*8*/
}
}
cout << "\n\n";
cout << "\n\n";
ifstream file3 ("quartine.txt", ios::in|ios::binary|ios::ate);
if (file3.is_open())
{
size = file3.tellg();
memblock3 = new char [size];
file3.seekg (0, ios::beg);
file3.read (memblock3, size);
file3.close();
for (int i=0; i<size;i++) {
valorestringa = intToString(memblock3[i]);
stringaquartina += valorestringa;
}
cout << "\n\n";
cout << "carico quartine in memoria...";
cout << "\n\n";
cin.get();
cout << "Inizio elaborazione...";
testo=stringaquartina;
continua = true;
inizio = -1; /*1*/
while(continua){
fine = testo.find(',',inizio+1); /*2*/
// ultima parola
if(fine==-1){ /*3*/
continua = false;
fine = testo.length(); /*4*/
}
// Estrazione parola
lparola = (fine-inizio)-1; /*5*/
estratta = testo.substr(inizio+1,lparola); /*6*/
token2.push_back(estratta); /*7*/
inizio = fine; /*8*/
}
}
for (int a=0; a< token2.size(); a++) {
if (a%4==0) {
quartine.clear();
confronta.clear();
confrontainteri.clear();
}
quartine.push_back(token2[a]);
if (quartine.size()==4) {
for (int y=0; y<quartine.size(); y++) {
for (int a=0; a< token1.size(); a++) {
if (a%5==0) {
estrazioni.clear();
confronta.clear();
confrontainteri.clear();
}
estrazioni.push_back(token1[a]);
if (estrazioni.size()==5) {
estrazioni[0].replace(0, 2, "");
confronta.push_back(estrazioni[0]);
confronta.push_back(estrazioni[1]);
confronta.push_back(estrazioni[2]);
confronta.push_back(estrazioni[3]);
confronta.push_back(estrazioni[4]);
confronta.push_back(quartine[0]);
confronta.push_back(quartine[1]);
confronta.push_back(quartine[2]);
confronta.push_back(quartine[3]);
for (int j=0; j<confronta.size(); j++) {
int confrontaintero = stoint(confronta[j]);
confrontainteri.push_back(confrontaintero);
}
cout << "\n\n";
int contadoppioni=0;
sort(confrontainteri.begin(),confrontainteri.end());
int MISURAVECTOR;
MISURAVECTOR=confrontainteri.size();
for (int i = 0; i < MISURAVECTOR-1; i++) {
if (confrontainteri[i] == confrontainteri[i+1]) {
contadoppioni++;
}
else {
}
}
if (contadoppioni==1) {
ritardo++;
if (ritardo > ritardi[0]) {
ritardi[0]=ritardo;
}
ritardi[1]=ritardo;
}
else if (contadoppioni==2) {
ritardo=0;
ritardi[1]=ritardo;
}
else if (contadoppioni>=3) {
ritardo=0;
ritardi[1]=ritardo;
}
else {
ritardo++;
if (ritardo > ritardi[0]) {
ritardi[0]=ritardo;
}
ritardi[1]=ritardo;
}
}
for (int y=0; y<estrazioni.size(); y++) {
}
for (int y=0; y<quartine.size(); y++) {
}
}
if (ritardi.size() !=0) {
//SCRITTURA FILE TXT
fout << quartine[0] << flush;;
fout << ",";
fout << quartine[1] << flush;;
fout << ",";
fout << quartine[2] << flush;;
fout << ",";
fout << quartine[3] << flush;;
fout << "---";
fout << " RA: ";
fout << ritardi[1] << flush;;
fout << "---";
fout << " RS: ";
fout << ritardi[0] << flush;;
//---------------------------------------------------
}
ritardi[0]=0;
ritardi[1]=0;
quartine.clear();
confronta.clear();
confrontainteri.clear();
ritardo=0;
}
}
}
//CHIUSURA FILE TXT
fout.close();
//---------------------------------------------------
cout << "fine elaborazione";
cin.get();
}
Grazie
Ciao