tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
9
ZUGRIFFE
850
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    pepsi_gx pepsi_gx ist offline Mitglied Gold
    Registriert seit
    Jun 2009
    Beiträge
    127
    Hallo Forum,

    ich benutze VC++ 2008. Nun habe ich ein für andere wahrscheinlich übliches, aber auch etwas "speziales" Problem.

    Der Wunsch ist, daß das Programm sucht ein Stichwort in ner .txt Datei. Dazu möchte ich die Methode Find von Cstring verwenden. Daher kommt die Folgefrage, wie ich zuerst den Inhalt der Datei in Cstring reinschreiben kann.

    Ich hab folgendes probiert:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    
        CString c;
        fstream f;
        int size = c.GetLength(); 
       
        f.open("Filename.txt", ios::in);
        f.read(c.GetBuffer(size), size);
        cout << c << endl;
        c.ReleaseBuffer(); 
     
        f.close();
    Leider geht es nicht.

    Hilfe oder Anregungen werden sehr gefreut!

    Gruß
     

  2. #2
    Avatar von vfl_freak
    vfl_freak vfl_freak ist offline Mitglied Diamant
    Registriert seit
    Aug 2007
    Ort
    Niedersachsen
    Beiträge
    2.161
    Zitat Zitat von pepsi_gx Beitrag anzeigen
    Leider geht es nicht.
    Moin,

    was genau geht denn nicht ? ? ?
    Etwas detaillierte Angaben wären sehr hilfreich !!

    Aber zwei Dinge sind mir aufgefallen:
    (a) ich würde statt "CString" besser "string" nehmen !
    (b) Du initialisierst Dein "nsize" mit der Länge Deines CStrings - dieser ist aber zu dem Zeitpunkt weder initialisiert noch gefüllt !

    Ich habe bei mir in älteren Code-Teilen dies gefunden, was Dir vielleicht weiterhilft:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    
    string in;
    ifstream m_fs( "Filename.txt" );
    in.erase();
    in.reserve( m_fs.rdbuf()->in_avail() );
    char c;
    while( m_fs.get(c) )
    {
          if( in.capacity() == in.size() )
          {
                in.reserve(in.capacity() * 3);
          }
          in.append(1, c);
    }

    Gruß
    Klaus
     
    Es ist noch kein Meister vom Himmel gefallen - sonst hätte man schon längst seine Leiche gefunden !!

    Falls ich helfen konnte, wäre eine Bewertung oder ein Danke nett ;-)
    -------------------------------------------------------------------------------------------------
    Ich beantworte keine Fragen per PN !!
    Stellt Eure Fragen im Forum - dann haben alle etwas davon !!

  3. #3
    Avatar von Ryu1991
    Ryu1991 Ryu1991 ist offline Mitglied Gold
    Registriert seit
    Dec 2007
    Beiträge
    241
    Code cpp:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    
    #include <string>
    #include <fstream>
     
    bool saveTextToString(const char* Path, std::string& Buffer){
      std::string Temp;
      Temp.clear();
      Buffer.clear();
     
      std::ifstream fin(Path);
     
      if(!fin.good()) return false;
     
      while(std::getline(fin, Temp)){
        Buffer.append(Temp);
        Buffer.append(std::endl);
      }
     
      return true;
    }

    Ungetestet, aber sollte Funktionieren
     
    "2 Dinge sind Unendlich, die Menschliche Dummheit und das Universum, bei 2tem bin ich mir noch nicht ganz sicher", Albert Einstein
    "Wenn man keine Ahnung hat, einfach mal Fresse halten", Dieter Nuhr

  4. #4
    pepsi_gx pepsi_gx ist offline Mitglied Gold
    Registriert seit
    Jun 2009
    Beiträge
    127
    Zitat Zitat von vfl_freak Beitrag anzeigen
    Moin,

    was genau geht denn nicht ? ? ?
    Etwas detaillierte Angaben wären sehr hilfreich !!

    Gruß
    Klaus
    "geht nicht" heißt, obwohl des Programm zu gehen scheint, aber der String ist leer.

    Danke
     

  5. #5
    pepsi_gx pepsi_gx ist offline Mitglied Gold
    Registriert seit
    Jun 2009
    Beiträge
    127
    Zitat Zitat von Ryu1991 Beitrag anzeigen
    Code cpp:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    
    #include <string>
    #include <fstream>
     
    bool saveTextToString(const char* Path, std::string& Buffer){
      std::string Temp;
      Temp.clear();
      Buffer.clear();
     
      std::ifstream fin(Path);
     
      if(!fin.good()) return false;
     
      while(std::getline(fin, Temp)){
        Buffer.append(Temp);
        Buffer.append(std::endl);
      }
     
      return true;
    }

    Ungetestet, aber sollte Funktionieren
    Danke schon mal.

    Hier Fehlermeldungen nach Kompilieren:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    
    Error   5   error C2228: left of '.clear' must have class/struct/union  d:\Gao\Visual Studio 2008\C++ Projects\BaiduTest\BaiduTest\BaiduTest.cpp    66
    Error   6   error C2228: left of '.clear' must have class/struct/union  d:\Gao\Visual Studio 2008\C++ Projects\BaiduTest\BaiduTest\BaiduTest.cpp    67
    Error   9   error C2780: 'std::basic_istream<_Elem,_Traits> &std::getline(std::basic_istream<_Elem,_Traits> &,std::basic_string<_Elem,_Traits,_Alloc> &,const _Elem)' : expects 3 arguments - 2 provided    d:\Gao\Visual Studio 2008\C++ Projects\BaiduTest\BaiduTest\BaiduTest.cpp    71
    Error   7   error C2784: 'std::basic_istream<_Elem,_Traits> &std::getline(std::basic_istream<_Elem,_Traits> &,std::basic_string<_Elem,_Traits,_Alloc> &)' : could not deduce template argument for 'std::basic_istream<_Elem,_Traits> &' from 'std::ifstream'   d:\Gao\Visual Studio 2008\C++ Projects\BaiduTest\BaiduTest\BaiduTest.cpp    71
    Error   8   error C2784: 'std::basic_istream<_Elem,_Traits> &std::getline(std::basic_istream<_Elem,_Traits> &,std::basic_string<_Elem,_Traits,_Alloc> &)' : could not deduce template argument for 'std::basic_string<_Elem,_Traits,_Alloc> &' from 'System::String ^'  d:\Gao\Visual Studio 2008\C++ Projects\BaiduTest\BaiduTest\BaiduTest.cpp    71
    Error   4   error C3149: 'System::String' : cannot use this type here without a top-level '^'   d:\Gao\Visual Studio 2008\C++ Projects\BaiduTest\BaiduTest\BaiduTest.cpp    65
    Error   3   error C3699: '&' : cannot use this indirection on type 'System::String' d:\Gao\Visual Studio 2008\C++ Projects\BaiduTest\BaiduTest\BaiduTest.cpp    63
    Error   10  fatal error C1903: unable to recover from previous error(s); stopping compilation   d:\Gao\Visual Studio 2008\C++ Projects\BaiduTest\BaiduTest\BaiduTest.cpp    71
     

  6. #6
    pepsi_gx pepsi_gx ist offline Mitglied Gold
    Registriert seit
    Jun 2009
    Beiträge
    127
    Ich frage anders:

    Wie kann ich in VC++ 2008 nach einem Wort z.B. "Er" in einer .txt Datei suchen?

    Ich hab zwar get, aber hat mir wenig geholfen.

    LG
     

  7. #7
    deepthroat deepthroat ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Jun 2005
    Beiträge
    8.168
    Hi.

    Bsp:
    Code cpp:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    
    std::ifstream in("datei.txt");
     
    std::istreambuf_iterator<char> cur(in), end;
    std::string text("suche");
     
    std::istreambuf_iterator<char> res = std::search(cur, end, text.begin(), text.end());
     
    if (res != end) {
        std::cout << "found!" << std::endl;
    }
    Gruß
     
    If at first you don't succeed, try again. Then quit. No use being a damn fool about it.

  8. #8
    pepsi_gx pepsi_gx ist offline Mitglied Gold
    Registriert seit
    Jun 2009
    Beiträge
    127
    Danke euch allen für die Antworten.

    Nun habe ichs schon geschafft, den Inhalt der Datei in einen String zu schreiben.

    Eine weitere Aufgabe ist, ein Teilstring in dem geschriebenen String zu finden.

    Es wird diskutiert hier:

    http://www.tutorials.de/forum/c-c/34...ml#post1775735
     

  9. #9
    pepsi_gx pepsi_gx ist offline Mitglied Gold
    Registriert seit
    Jun 2009
    Beiträge
    127
    Zitat Zitat von deepthroat Beitrag anzeigen
    Hi.

    Bsp:
    Code cpp:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    
    std::ifstream in("datei.txt");
     
    std::istreambuf_iterator<char> cur(in), end;
    std::string text("suche");
     
    std::istreambuf_iterator<char> res = std::search(cur, end, text.begin(), text.end());
     
    if (res != end) {
        std::cout << "found!" << std::endl;
    }
    Gruß
    Danke, hier Fehlermeldungen:
    Error 3 error C2039: 'search' : is not a member of 'std'
    Error 4 error C3861: 'search': identifier not found
     

  10. #10
    deepthroat deepthroat ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Jun 2005
    Beiträge
    8.168
    Zitat Zitat von pepsi_gx Beitrag anzeigen
    Danke, hier Fehlermeldungen:
    c++ std::search
     
    If at first you don't succeed, try again. Then quit. No use being a damn fool about it.

Ähnliche Themen

  1. CString in CFile schreiben
    Von Alex braucht Hilfe im Forum VisualStudio & MFC
    Antworten: 3
    Letzter Beitrag: 08.07.10, 09:03
  2. Antworten: 2
    Letzter Beitrag: 12.02.08, 18:21
  3. Aus Datei lesen und in eine andere Datei schreiben
    Von Computerpinguin im Forum C/C++
    Antworten: 1
    Letzter Beitrag: 03.05.05, 14:29
  4. Antworten: 4
    Letzter Beitrag: 25.04.05, 22:15
  5. Antworten: 15
    Letzter Beitrag: 26.10.04, 15:06