2016-11-12 25 views
1

私はQStringとintをとる関数を作ろうとしています。 QString変数をofstreamのファイル名に変換し、整数を取り出してファイルに配置します。これまでのところ、私は "Filename.dat"のような一定のファイル名をとり、それに変数を書き込むことができました。私はこのようなQStringのを使用しようとすると、しかし:QT ofstreamは変数をパス名として使用します

void write(const char what,int a){ 
    std::ofstream writefile; 
    writefile.open("bin\\" + what); 
    writefile << a; 
    writefile.close(); 
} 

私は、これは()の書き込みを呼び出す関数である

void write(const char,int)': cannot convert argument 1 from 'const char [5]' to 'const char 

エラーが発生します。

void Server::on_dial_valueChanged(int value) 
{ 
    write("dial.dat",value); 
} 

"bin \"と文字列を組み合わせる代わりに "bin \ dial.dat"を使用すると、正常に動作します。 ofstream.open(); "const char *"を使用します。

私は、彼らが IS-

に質問を私の記述と一致しない場合がありますので、誰もが「ビン\」とのQStringを組み合わせて、それがofstreamのを動作させるためにどのようなアイデアを持っています、すべてのファイルタイプを試してみました? 私はそれを検索するのに多くの時間を費やしましたが、まだそれを動作させることはできません。 ありがとう! 任意の提案が歓迎されている以上

+0

を試してみてください。それは文字列の接続ではありません。 – Logman

+0

まあ..この場合、これらの2つの文字列を接続してofstreamで動作させる方法を知っていますか?おかげで –

答えて

1

は、あなたが機能するために1つの文字を渡すと間違っているので、void write(const char* what,int a)はcstringの先頭にポインタを渡すべきです。

また、2つのcstringを連結したいし、C++では他の言語のようにすることはできませんが、std :: stringを使用して必要な処理を行うことができます。

はこの ` "ビン\\" +あなたは事はそのやって何を行うことはありませんwhat`この

#include <string> 

void write(const char* what,int a){ 
    std::ofstream writefile; 
    std::string fileName("bin\\"); 
    fileName+=what; 
    writefile.open(fileName.c_str()); 
    writefile << a; 
    writefile.close(); 
} 
+0

ありがとう!私はそれが欲しいのと同じように動作します。それを少し変更してファイルタイプの余分な文字列を追加するように管理しました。変数型は問題ではないように見えます。 –

+0

Btw。あなたはQStringsについて質問しており、あなたのコードでそれらを使わないでください。そして、私の答えが好きな人は、投票してください。) – Logman

+0

私は過去1ヶ月間cppを勉強しています。今はQTでベストを尽くしています。あなたの助けをたくさん感謝します –

関連する問題