string aus Datei lesen

LadyMarion

Mitglied
Hallo,

ich habe folgendes Programm:

Code:
#include<iostream>
#include<string>
#include<fstream>
#include<sstream>
using namespace std;

string testfkt(string param){
stringstream test;
test <<
	"  BlaBlaBla\n"
	"     BlaBlaBla\n"
	"        Bla = "<<param<<"\n"
	"        BlaBlaBla\n"
	"     BlaBlaBla\n"
	"  BlaBlaBla\n"
	;
	return test.str();
}


int main () {

string maintest;
maintest = testfkt("jajaja");
cout << maintest << endl;
}

Hier wird mir der obere Text mit dem jajaja auch ausgegeben. Jetzt soll das ganze aber auch funktionieren, wenn der Text aus einer anderen Datei gelesen wird.

Also folgendermaßen: In einer anderen Datei steht folgendes:

Code:
	string fkt(string param1, string param2){
	stringstream test2;
	test2 <<
		"  BlaBlaBla\n"
		"     BlaBlaBla\n"
		"        Bla = "<<param1<<"\n"
		"        BlaBlaBla\n"
		"     BlaBlaBla: "<<param2<<"\n"
		"  BlaBlaBla\n"
		;
		return test2.str();
	}

Nun soll in der eigentichen Datei genau diese Datei eingelesen werden:

So wird ja die komplette Datei eingelesen:

Code:
ifstream fin;
fin.open("Dateiname");
cout << fin.rdbuf();
fin.close();

aber ich möchte ja nur den Text selbst haben:

Code:
stringstream sstr;
ifstream fin;
fin.open("Dateiname");
sstr = string fkt("ja", "nein");
cout << sstr << endl;
fin.close();

Dabei kommt die Fehlermeldung:
"syntax error before '(' token ( in der Zeile: sstr = string fkt("ja", "nein"); )"

Ich bin noch nicht so geübt in C++ und komme grad nicht wirklich weiter.

Zusatz:
Die Texte sollen nicht ausgegeben werden, sondern nacheinander zusammen in eine neue Datei geschrieben werden.
Funktioniert das dann so:

Code:
ofstream FOUT("Dateiname");
FOUT << maintest;
FOUT << sstr;
FOUT.close();

Ich würde mich freuen, wenn mir jemand weiterhelfen könnte.
 
Hallo,

sstr = string fkt("ja", "nein");
nehm das Wort "string" da mal weg, gehört dort nicht hin.
der Rückgabewert der Funktion, wird ja in sstr gespeichert.

ein bisschen Code für dich:
Code:
#include<iostream>
#include<string>
#include<fstream>
#include<sstream>
using namespace std; 

string testfkt(string param)
{
   stringstream test;
   test <<
	"  BlaBlaBla\n"
	"     BlaBlaBla\n"
	"        Bla = "<<param<<"\n"
	"        BlaBlaBla\n"
	"     BlaBlaBla\n"
	"  BlaBlaBla\n"
	;
   return test.str();
}

string DeineLadeFunktion()
{
     ifstream read;
     read.open("Dateiname.txt", ios::in);
     string tmp1 = "";
     if(read.good())
     {
          string tmp2 = "";
          while(getline(read, tmp2) || !read.eof())
          {
               tmp1 += tmp2;
          }
     }
     read.close();
     return tmp1;
}
// In tmp2 steht immer die aktuell ausgelesene Zeile aus der Datei.
// Und in tmp1 steht am Ende alles was ausgelesen wurde, weil wir es mit dem += Operator immer anhängen.

void DeineSchreibeFunktion(string param1, string param2)
{
     ofstream write;
     write.open("Dateiname2.txt", ios::out | ios::trunc);
     if(write.good())
     {
          write << param1  << endl;  // hier schreiben wir beides zusammen,
          write << param2  << endl;  //  hintereinander in die neue Datei
    }
     write.close();
}

// Dann kannst du aufrufen:
int main()
{
   string str;
   str = DeineLadeFunktion();  // hier hast du den Inhalt aus der Datei
   string maintest = testfkt("jajaja");
   DeineSchreibeFunktion(str, maintest);
   return 0;
}
Habs nicht getestet, aber müsste so in etwa hinkommen. ^^

MfG Turri
 

Neue Beiträge

Zurück