PDA

Visualizza la versione completa : [c++] ripulire righe risultanti da "quadratino" finale...


freetom
12-04-2010, 20:33
Cerco di spiegarmi meglio...

Ho due file A.txt e B.txt contenti ciascuno solo una colonna di numeri

es...

A.txt contiene

1
10
8
4

B.txt contiene

2
11
9
5

io devo semplicemente unire i due contenuti per formare un file C.txt contenente sempre secondo l'esempio:

1,2
10,11
8,9
4,5

Io ci sono riuscito solo che in quello costituito da me c'è presente un carattere "nascosto" che rivisualizzato in un altro txt appare come un quadratino... che ho cercato di raffigurare qui sotto in grassetto...

presenze:0°***combinazione:83,15[]***rs: 510ra: 510colpirimanenti: 0


Dovrei rimuoverlo in quanto altrimenti il successivo confronto non avviene in modo corretto

Qualche idea?

Grazie a tutti/e

:ciauz:

Per aiutarvi nell'aiutarmi... :) il codice per generare il mio C.txt è il seguente:



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

using namespace std;


string intToString(int value) {
stringstream ss;
ss << value;
return ss.str();
}

int main (int argc, char *argv[]) {

vector<string> vec;

vector<string> scelti;

int contatore=0;

ifstream fin("A.txt");
ifstream fin2("B.txt");

cout << "\n\n\n";
cout << "Press ENTER to continue..." << endl;
cout << "\n\n\n";
cin.get();


if (fin,fin2) {

string s;
string s2;

while(fin,fin2) // cattura tutti gli errori.
{
getline(fin,s);
getline(fin2,s2);


cout << "PRIMO ELEMENTO: ";
cout << s;


cout << "\n";

cout << "SECONDO ELEMENTO: ";
cout << s2;

cout << "\n";

cout << "salvataggio del 1° e 2° elemento di ciascun ambo elastico...";
//cin.get();

ofstream fout;

fout.open("C.txt", ios::app);


//creazione del file...
string datoultimoterzina= s;
string datoultimoterzina2= s2;
fout << datoultimoterzina;
fout << ",";
fout << datoultimoterzina2;
fout << "\n";




}
}
}

oregon
12-04-2010, 21:04
Probabilmente è il carattere di "ritorno a capo" che leggi e visualizzi (non so come) nel txt (quale txt?) ...

Quindi, è possibile che sia sbagliata la "lettura", non la scrittura.

P.S.

1) Perchè usi due variabili string diverse (datoultimoterzina,datoultimoterzina2) invece di usare già quelle che hai (s,s2) ?

2) Perchè apri sempre il file di out all'interno del ciclo, invece di farlo una sola volta al suo esterno ?

3) Perchè non chiudi i file una volta terminato il programma?

freetom
13-04-2010, 12:08
Ho riprovato e riprovato e alla fine mi sono accorto che l'errore.. risiedeva nel cod che estrapolava le ultime 500 righe.. ovvero in questi vi era un'aggiunta di troppo per quanto riguardava il ritorno a capo appunto.

tolto con questo:




//PULISCO OGNI LINEA DELL'ULTIMO CARATTERE DI RITORNO A CAPO...

line = line.substr(0, line.length()-1);

//-------------------------------------------------------------



sparito il fastidio... :)


:ciauz:

oregon
13-04-2010, 12:10
Come ti avevo detto ... il problema era nella lettura ...

Loading