Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1
    Utente di HTML.it L'avatar di freetom
    Registrato dal
    Nov 2001
    Messaggi
    3,725

    [c++] riunire in un unico txt il contenuto di più txt

    Ho 10 txt contenenti tot righe cadauno...
    Vorrei riunificare... il loro contenuto in un unico txt mettendo prima... ogni riga di ciascun file in un vector intermedio che qui ho chiamato fileriunificante e poi creando il file relativo tutteinsieme.txt

    Per adesso ho provato così:

    codice:
    
    //RACCOLGO TUTTE LE RIGHE DA CIASCUNO DEI 10 FILES TXT GENERATI...
    
    for (int i=1; i<11; i++) { 
    
        ifstream file("file"+i+".txt"); 
        char buffer[8]; 
         
        while(file.getline(buffer, 8, ',')) 
        {         
            istringstream ss(buffer); 
            int temp; 
            ss >> temp; 
            fileriunificante.push_back(temp); 
        }   
        
        } 
        
        }
    ma il sistema si arrabbia.. e mi segnala:

    file.cpp invalid operands of types `const char*' and `const char[5]' to binary `operator+'

    C'e' un modo per fare quanto mi prefiggerei di fare o no? Se si quale è il più rapido e indolore...?

    Grazie a tutti/e


  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,481
    codice:
    #include <sstream>
    ...


    codice:
        for (int i=1; i<11; i++) 
        { 
            ostringstream filename;
    
            filename << "file" << i << ".txt";
            ifstream file(filename.str().c_str());
    ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it L'avatar di mico
    Registrato dal
    Jul 2005
    Messaggi
    140
    Credo che l'errore sia qui... ("file"+i+".txt");
    1. non si può usare l'operatore + tra le stringhe... potresti usare la funzione strcat della libreria cstring per concatenare le stringhe...
    2. non puoi sommare i con le stringhe... i è di tipo int..

    Penso che questa possa essere una soluzione (senza usare strcat): crei una stringa apposita di nome nome_file di 10 caratteri... i primi 4 sono per i caratteri di "file" e rimangono fissi.... gli ultimi 5 sono per i caratteri di ".txt" + il fine stringa... e anch'essi rimangono fissi.... l'unico carattere variabile è il carattere numerico.... ma potresti risolvere il problema usando un ciclo for in cui la variabile i è di tipo char (e scorre da '1' a '9')... il caso i=10 invece andrebbe gestito separatamente!...
    ovviamente per aprire il file scrivi ifstream file(nome_file);
    Se ci sono altri errori e/o soluzioni migliori qualcun'altro intervenga!
    Ciao!

  4. #4
    Utente di HTML.it L'avatar di freetom
    Registrato dal
    Nov 2001
    Messaggi
    3,725

    grazie oregon ma scusa temo di non aver capito...

    Originariamente inviato da oregon
    codice:
    #include <sstream>
    ...


    codice:
        for (int i=1; i<11; i++) 
        { 
            ostringstream filename;
    
            filename << "file" << i << ".txt";
            ifstream file(filename.str().c_str());
    ...
    Io ho provato il tuo codice così:

    codice:
    #include <iostream>
    #include <fstream>
    #include <string>
    #include <iostream>
    #include <fstream>
    #include <string>
    #include <vector>
    #include <algorithm>
    #include <sstream>
    #include <iomanip>
    #include <vector>
    #include <cstdlib>
    #include <set>
    
    
    
    using namespace std;
    
    string intToString(int value) {
        stringstream ss;
        ss << value;
        return ss.str();
    }
    
    string floatToString(float value) {
        stringstream ss;
        ss << value;
        return ss.str();
    }
    
    int main () {
    
        for (int i=1; i<11; i++) 
        { 
            ostringstream filename;
    
            filename << "file" << i << ".txt";
            ifstream file(filename.str().c_str()); 
    
        
        } 
    
    }
    Ma non riesco a capire e trovare il file generato unificante o il vector popolato da tutte le righe ogni file... :master:


  5. #5
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,481
    Il codice che ti ho suggerito serve [b]solo[b] a formare correttamente in C++ il nome del file componendolo con le varie parti, evitando l'errore di cui parlavi.

    Per il resto, non ho capito cosa intendi ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  6. #6
    ogni file può avere più righe? del tipo

    codice:
    1,2,3
    4,5,6
    con ogni numero separato da una virgola?

  7. #7
    Utente di HTML.it L'avatar di freetom
    Registrato dal
    Nov 2001
    Messaggi
    3,725

    esattamente

    Originariamente inviato da antotan
    ogni file può avere più righe? del tipo

    codice:
    1,2,3
    4,5,6
    con ogni numero separato da una virgola?

    esattamente così e avrei necessità di riunificar eil contenuto di tutti i files in un unico riassuntivo...


  8. #8
    Potresti fare così

    Codice PHP:
    #include <iostream>
    #include <fstream>
    #include <string>
    #include <sstream>

    using namespace std;

    int main () {

        
    ofstream out_file("output.txt");

        for (
    int i=1i<3i++) 
        { 
            
    ostringstream filename;
            
    string line;

            
    filename << "file" << << ".txt";
            
    ifstream file(filename.str().c_str());    
        
            while(
    getline(fileline'\n'))
            {
                
    out_file << line << ",";            
            }        
                    
            if(
    == 2){ //<- 1
                
    out_file.seekp(-1ios::end);
                
    out_file << '\n';
            }        
                    
            
    file.close();
        } 
        
        
    out_file.close();

    La parte (1) serve per eliminare l'ultima virgola, quando gestisci l'ultimo file. Al posto della virgola, ci metti un a capo.

    L'ho testato su:

    file1.txt
    codice:
    1,2,3
    4,5,6
    file2.txt
    codice:
    7,8,9
    10,11,12
    e output.txt risulta essere

    codice:
    1,2,3,4,5,6,7,8,9,10,11,12

  9. #9
    Utente di HTML.it L'avatar di freetom
    Registrato dal
    Nov 2001
    Messaggi
    3,725

    ci siamo quasi grazie 1000

    L'ultimo aggiustamento... dovrebbe consistere nel mantenere le righe così come sono... (con i loro ritorni a capo)

    cerco di spiegarmi meglio

    se ho due file txt:

    file1.txt

    1,2,3
    4,5,6

    file2.txt

    10,32,90
    7,31,80
    3,77,89

    il file risultante dall'operazione di unificazione voluta tutteunite.txt dovrebbe risultare:

    1,2,3
    4,5,6
    10,32,90
    7,31,80
    3,77,89

    Una piccola modifica al tuo cod credo basti ma non so quale

    grazie mille


  10. #10
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,481
    E' necessario farlo da programma? Non puoi farlo da finestra DOS?

    copy file1.txt+file2.txt risultante.txt
    No MP tecnici (non rispondo nemmeno!), usa il forum.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.