2017-04-19 2 views
-1

aufgerufen Ich möchte eine Datei mit C++ erstellen und etwas darin schreiben. Ich habe zwei Klassen, eine mit einem Vererbung :: writer (String-Name) und eine weitere Unterklasse namens Vererbung1 (int zahl). Ohne die ganze Zahl funktioniert es genau, aber wenn ich die Ganzzahl in eine Zeichenkette schreiben und nach der Funktion einfügen will, wird sie nicht funktionieren.String als Funktion und von anderen Unterklasse mit ganzzahligen Wert

das funktioniert normalerweise

Vererbung.cpp

void Vererbung::Writer(string name) 
{ 
    ofstream text; 
    text.open ("test.txt", ios::trunc); 

    text <<"write something\n"; 
    text <<"again2 \n"; 
    text <<"again 3\n"; 
    text << name; 

    text.close(); 
} 

Vererbung1.cpp

include "Vererbung.h" 


void Vererbung1::Writer(int zahl) 
{ 
    std::ostringstream ostr; 
    ostr<< zahl; 

    name = "\n" "Test\n""Test\n""Test\n" ostr.str(); 

    Vererbung::Writer(name); 
} 

Als ich es in Haupt laufen, sagt es, dass ich eine Notwendigkeit ';' vor ostr.str(); Wie kann ich das beheben, wenn ich einen ganzzahligen Wert in eine Datei hineinstreichen möchte?

+1

Verwenden Sie +, um 'std :: string' Objekte anzufügen. – aschepler

+0

Sie können das String-Einfügen nur mit String-Literalen verwenden, es kann nicht zum Verketten mit Variablen oder Ausdrücken verwendet werden. – Barmar

+1

@aschepler Veröffentlichen Sie das als Antwort. – Barmar

Antwort

0

Dieses Problem wird sehr unübersichtlich angegeben, aber wenn wir davon ausgehen, dass name ein std::string ist, dann gilt:

name = "\n" "Test\n""Test\n""Test\n" ostr.str(); 

Diese nebeneinander geschrieben nur ein Haufen von Stringliterale ist, auch durch eine std::string Ausdruck gefolgt nur zufällig dort im freien Raum schwebend.

Ihr Computer weiß nicht, was Sie tun sollen.

Obwohl Sie eigentlich kann concatenate Stringliterale auf diese Weise (Literale ist so etwas wie "hello world", aber nicht etwas wie aStringVariable), die nicht auf beliebige Ausdrücke gilt (und Sie nicht einmal brauchen, wo du hast es benutzt).

Ich denke, dass das, was Sie gemeint war:

name = "\nTest\nTest\nTest\n" + ostr.str(); 

Ich hoffe, dass Ihr C++ Buch lehrt dies; Wenn nicht, besorge dir einen besseren.

+0

ahh okey danke! – NewUser2810

+0

auch 'Name' ist nicht deklariert ... vielleicht besser wäre' Writer ("bla" + ostr.str()); ' –

Verwandte Themen