2017-04-19 7 views
-1

C++でファイルを作成して、何かを書きたいと思っています。私はVererbung :: writer(文字列名)とVererbung1(int zahl)という別のサブクラスの2つのクラスを持っています。整数がなければ、それはpeferctlyで動作しますが、文字列に整数を書いて、それを機能の後に貼り付けたいときには、動作しません。関数としての文字列、整数値を持つ他のサブクラスによって呼び出される

私がメインでそれを実行すると、これは通常

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); 
} 

の作品、それは私が必要と言います ';' ostr.str()の前。どのように私はこれを修正することができます、私はそれにファイル内の文字列に整数値をしたいのですか?

+1

+を使用して 'std :: string'オブジェクトを追加します。 – aschepler

+0

文字列リテラルでのみ文字列貼り付けを使用できます。変数や式と連結するために使用することはできません。 – Barmar

+1

@ascheplerそれを答えとして投稿してください。 – Barmar

答えて

0

この問題は非常に不明確述べているが、我々はnamestd::stringであると仮定した場合、その後:

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

これもstd::string式が続く隣同士に書かれた文字列リテラルのちょうど束であり、自由空間にランダムに浮遊しているだけです。

お使いのコンピュータは、あなたがしたいことを知りません。

あなたが実際には、任意の式には適用されません(とあなたがどこまでもそれを必要としないこのように CONCATENATEの文字列リテラルを(リテラルがaStringVariableのようなもの"hello world"のようなものですが、ない)、することができますがあなたはそれを使用しました)。

私が何を意味することは、このだったと思う:

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

私はあなたのC++の本はこれを教えることを願っています。そうでない場合は、より良いものを得る。

+0

ああああありがとう! – NewUser2810

+0

また、 'name'は宣言されていません... Writer(" bla "+ ostr.str());' –

関連する問題