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 schonMFG Ghost
//EDIT: Deutsche Sprache, schwere Sprache
-
ok, ich werde es mir zu herzen nehmen !