[c++] problema esclusione caratteri

di il
3 risposte

[c++] problema esclusione caratteri

Salve a tutti, avrei bisogno di un aiuto.
nel mio programma dovrei eseguire una lettura da file txt (e fin qui tutto bene) e dopo in un secondo passo dovrei escludere da questo file il testo (scritto in esso) delimitato da parentesi quadre.
esempio.


ciao matteo [sole]  ----------> ciao matteo


qualcuno può venirmi in aiuto proprio non riesco a trovare un modo. io come libreria uso la fstream.h

saluti
matteo

3 Risposte

  • Re: [c++] problema esclusione caratteri

    Il tuo codice?
  • Re: [c++] problema esclusione caratteri

    #include <iostream>
    #include <cstdlib>
    #include <fstream>

    using namespace std;

    int main () {
    char Nomefile[50], riga[100];
    ifstream file;

    cout << "nome file da leggere (corretto)";
    cin >>Nomefile;

    file.open (Nomefile);
    if (!file) {
    cout<<"Non si puo' aprire il file"<<endl;
    return 0;
    }
    char c;
    cin >> c;
    file.ignore (c='[',']');
    char ch;
    while (file.get(ch))
    cout.put(ch);

    cout<<endl;

    file.close();
    system("pause");
    }
  • Re: [c++] problema esclusione caratteri

    Questo è un esempio. Ti scarta ogni copia [] che trova nella riga
    
    #include <iostream>
    #include <cstdlib>
    #include <string>
    #include <fstream>
    
    using namespace std;
    
    int main () {
    	string Nomefile, riga;
    	
    	ifstream file;
    
    	cout << "nome file da leggere (corretto)";
    	cin >> Nomefile;
    
    	file.open (Nomefile.c_str());
    	if (!file) {
    		cout<<"Non si puo' aprire il file"<<endl;
    		return 0;
    	}
    
    	while(std::getline(file,riga))
    	{
    		bool more = true;
    		do 
    		{
    			string tempLeft,tempRight;
    			size_t initPos = riga.find_first_of('[');
    			size_t lastPos = riga.find_first_of(']');
    			if(initPos != string::npos && lastPos != string::npos)
    			{
    				tempLeft = riga.substr(0,initPos);
    				tempRight = riga.substr(++lastPos);
    				riga = tempLeft + tempRight;
    			}
    			else
    			{
    				more = false;
    			}
    		} while (more);
    		
    		cout << riga;
    	}
    
    	cout<<endl;
    
    	file.close();
    	system("pause");
    }
    
Devi accedere o registrarti per scrivere nel forum
3 risposte