Txt Datei in Cstring schreiben

pepsi_gx

Erfahrenes Mitglied
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:
    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ß
 
Leider geht es nicht.

Moin,

was genau geht denn nicht ? ? ? :confused:
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:
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
 
C++:
#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
 
Zuletzt bearbeitet von einem Moderator:
C++:
#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:
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
 
Zuletzt bearbeitet von einem Moderator:
Ich frage anders:

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

Ich hab zwar ge:google:t, aber hat mir wenig geholfen.

LG
 
Hi.

Bsp:
C++:
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ß
 
Hi.

Bsp:
C++:
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
 
Zurück