Lägga in textsträngar i textfiler[C++]

Permalänk
Medlem

Lägga in textsträngar i textfiler[C++]

Jag håller på att göra en liten "databas" i C++. Det är meningen att man skall kunna skriva in vad som helst och sedan ska det lagras i en textfil. Nu är det så att jag lagrar teckensträngarna i en String klass som ligger i en länkad lista. Själva strängen lagras i en teckenvektor som itsString(medlemsvariabel i String-klaseen) pekar på. Man kan ju få alla teckensträngar på skärmen genom att anropa den länkade listan som sedan anropar varje nod i listan i tur och ordning. Kan man på samma sätt få värdena till en textfil? Jag hade tänkt göra det med
hjälp av strängar(fstream klassen) men det kanske inte går? Finns det något annat sätt att lösa det på? Det är lite dåligt förklarat så säg till om ni inte förstår så ska jag förklara lite tydligare:) Jag kan nog visa
delar av koden också om ni vill men det blir lite långt att lägga upp hela för den är c.300rader...

Permalänk
Medlem

fileName[10] = "text.dat";

ofstream file(fileName, ios::app);
if (file.is_open()){
file << myString << endl;
}
file.close();

Permalänk
Medlem

Nu gör jag så här för att få strängarna till filen:
cout<<"Var vill du spara filen?";
cin>>fileName;
ofstream fout(fileName); //öppna för skrivning
//ll är av typen LinkedList, ShowString() anropar först huvudnoden och
fout<<ll.ShowString(); //sedan resten av noderna i tur och ordning
fout.close();

Men om ShowString() är av typen void så säger kompilatorn något i stil med:
no match for ofstream &<<void
candidates are: class ostream & ostream::operator<<(char)
och fortsätter så med alla typer den stöder. Så skulle man kunna sätta in stöd för void i iostream-klassen? Jag testade också med att sätta ShowString() till int men då får jag dessa nummer i filen oavsett vad jag skriver: 2570040. Hur gör man annars för att få ett radbyte mellan strängarna som kommer till filen, jag antar att alla kommer efter varandra på samma rad nu om det skulle funka? Anropen går i den här ordningen:
ll.ShowString()->
ShowString(){myHead->ShowString();}->
virtual void ShowString(){myNext->ShowString();}->
virtual void ShowString(){myString->ShowString();myNext->ShowString();}->
ShowString(){cout<<itsString<<endl;}