Text parsen und dann die ganze Zeile löschen



  • folgender code :

    #include <iostream.h>
    #include <fstream.h>
    #include <string.h>
    
    void main()
    {
    	char			tmpZeile[256];
    	string			tmpString;
    	unsigned int	ui_CommentZeilen = 0;
    
    	ifstream		inFile;
    
    	inFile.open("test.txt");
    	if( ! inFile.is_open() )
    	{
    		cout << "Datei konnte nicht geoeffnet werden" << endl;
    		return;
    	}
    	else
    		cout <<  "Datei geoeffnet";
    
    	while (! inFile.eof() )
    	{
    		inFile.getline(tmpZeile,200);
    		//	hier würde ich jetzt die tmpZeile in den String kopieren, aber ... wie ???
    	}
    
    }
    

    liefert die fehlermeldung :

    c:\programme\microsoft visual studio\vc98\myprojects\commentremover\main.cpp(8) : error C2065: 'string' : nichtdeklarierter Bezeichner



  • #include <iostream>
    #include <fstream>
    #include <string>
    using namespace std;
    
    int main()
    


  • excess schrieb:

    hier würde ich jetzt die tmpZeile in den String kopieren, aber ... wie ???

    Na dann guck dir noch mal den Link von elise an und vor allem die Konstruktoren.



  • Wieso beschwert der sich hier eigentlich, dass er nicht auf das private-Zeugs zugreifen kann?

    #include <vector>
    #include <string>
    #include <algorithm>
    #include <iterator>
    #include <fstream>
    
    int main()
    {
    	std::vector<std::basic_string<char,std::char_traits<char>,std::allocator<char>>>vec;
    	std::copy(std::istream_iterator<std::basic_string<char,std::char_traits<char>,std::allocator<char>>>(std::ifstream(std::basic_string<char,std::char_traits<char>,std::allocator<char>>("file.txt").c_str())),std::istream_iterator<std::basic_string<char,std::char_traits<char>,std::allocator<char>>>(),std::back_inserter(vec));
    	std::vector<std::basic_string<char,std::char_traits<char>,std::allocator<char>>>::reverse_iterator r=vec.rbegin();
    	while(++r!=vec.rend())r->erase(r->find("//"),r->length()-r->find("//"));
    	std::copy(vec.begin(),vec.end(),std::ofstream(std::basic_string<char,std::char_traits<char>,std::allocator<char>>("file.txt").c_str(),std::ios::trunc));
    }
    


  • Michael E. schrieb:

    Wieso beschwert der sich hier eigentlich, dass er nicht auf das private-Zeugs zugreifen kann?

    Wer ist "der"?

    Mein Compiler (der von Visual C++ 7.1) hätte nur gern Leerzeichen zwischen den schließenden Templateklammern und einen Iterator als dritten Parameter von copy. Nichts von "private-Zeugs" (was immer das sein mag).



  • hat sich erledigt ... es funktioniert.
    vielen dank !!!!!!!!

    gruss excess



  • MFK schrieb:

    Michael E. schrieb:

    Wieso beschwert der sich hier eigentlich, dass er nicht auf das private-Zeugs zugreifen kann?

    Wer ist "der"?

    Mein Compiler (der von Visual C++ 7.1) hätte nur gern Leerzeichen zwischen den schließenden Templateklammern und einen Iterator als dritten Parameter von copy. Nichts von "private-Zeugs" (was immer das sein mag).

    Sorry, "der" ist der Compiler von VC++ 8 und wenn man die Leerzeichen einfügt, sagt der das hier:

    g:\Programme\Microsoft Visual Studio 8\VC\include\xmemory(135) : error C2248: 'std::basic_ios<_Elem,_Traits>::basic_ios' : cannot access private member declared in class 'std::basic_ios<_Elem,_Traits>'
            with
            [
                _Elem=char,
                _Traits=std::char_traits
            ]
            g:\Programme\Microsoft Visual Studio 8\VC\include\ios(147) : see declaration of 'std::basic_ios<_Elem,_Traits>::basic_ios'
            with
            [
                _Elem=char,
                _Traits=std::char_traits
            ]
            This diagnostic occurred in the compiler generated function 'std::basic_ofstream<_Elem,_Traits>::basic_ofstream(const std::basic_ofstream<_Elem,_Traits> &)'
            with
            [
                _Elem=char,
                _Traits=std::char_traits
            ]
    


  • Der Copy-CTor von std::basic_ios ist private, darum ist std::basic_ofstream nicht kopierbar. std::copy nimmt aber den dritten Parameter by value.

    Aber wie ich schon sagte, da muss sowieso ein ostream_iterator hin, nicht der Stream selbst.



  • excess schrieb:

    folgender code :

    #include <iostream.h>
    #include <fstream.h>
    #include <string.h>
    
    void main()
    {
    	char			tmpZeile[256];
    	string			tmpString;
    	unsigned int	ui_CommentZeilen = 0;
    
    	ifstream		inFile;
    
    	inFile.open("test.txt");
    	if( ! inFile.is_open() )
    	{
    		cout << "Datei konnte nicht geoeffnet werden" << endl;
    		return;
    	}
    	else
    		cout <<  "Datei geoeffnet";
    	
    	while (! inFile.eof() )
    	{
    		inFile.getline(tmpZeile,200);
    		//	hier würde ich jetzt die tmpZeile in den String kopieren, aber ... wie ???
    	}
    	
    }
    

    liefert die fehlermeldung :

    c:\programme\microsoft visual studio\vc98\myprojects\commentremover\main.cpp(8) : error C2065: 'string' : nichtdeklarierter Bezeichner

    Mmmm....
    hast du zuerst C gelernt?
    Versuche die Variablen erst dann zu dekl. wenn du sie brauchst.
    Und versuche mit std::sring zu arbeiten, oder mit std::vector
    und nicht mit array ect... (wenn es sein muss, dann schon 🙂

    MFG Ghost

    //EDIT: Deutsche Sprache, schwere Sprache 🙂



  • ok, ich werde es mir zu herzen nehmen ! 😉


Anmelden zum Antworten