2011-12-22 6 views
3

N個のファイルを作成して書き込む必要があります。誰もがそれを識別するために整数で終わる必要があります。C++でintをwchar_t *に連結する方法は?

これはコードの私の作品です:

for(int i=0; i<MAX; i++) 
{ 
    uscita.open("nameFile"+i+".txt", ios::out); 
    uscita << getData() << endl; 
    uscita.close();  
} 

そして、それは私が実行した後、私のディレクトリ内で検索したいものだ。

nameFile0.txt 
nameFile1.txt 
nameFile2.txt 
... 
nameFileMAX.txt 

上記のコードの問題は、私が取得することですコンパイルエラー:

error C2110: '+' Impossible to add two pointers

名前の文字列を作成しようとすると、別の問題が発生します。

string s ="nameFile"+i+".txt"; 
uscita.open(s, ios::out); 

そして、問題がある:

error C2664: you cannot convert from string to const wchar_t*

私は何ができますか? intwchar_t*という異なる名前のファイルを作成するにはどうすればよいですか?

答えて

2

あなたは簡単かつ迅速であるwstringstream

std::wstringstream wss; 
wss << "nameFile" << i << ".txt"; 
uscita.open(wss.str().c_str(), ios::out); 
+0

ここでは実際に 'wstringstream'が必要です。 –

+0

いいえ、動作しません。コンパイラは言う: 'std :: basic_string <_Elem、_Traits、_Ax>'から 'const wchar_t *'に変換できないエラーC2664 –

+2

答えを更新するには '.c_str()'を使う必要があります。 – Joe

0

を使用することができます。

wchar_t fn[16]; 
wsprintf(fn, L"nameFile%d.txt", i); 
uscita.open(fn, ios::out); 
+0

ただの警告です。 'sprintf'、' wsprintf'、そして友人は、あなたが慎重ではないならばバッファオーバーフローを引き起こすことがよくあります。 (現時点で、またはコードが後で維持されているとき) –

+0

これは正しいですが、ここではファイル名が短いため注意が必要です – vpp

2

あなたはstd::to_wstringを使用することができます。

#include <string> 

// ... 

std::wstring s = std::wstring("file_") + std::to_wstring(i) + std::wstring(".dat"); 

(あなたがCを必要とする場合は、s.c_str()を使用しますスタイルwchar_t*

関連する問題