2014-02-10 179 views
0
#include <fstream> 
#include <iostream> 
using namespace std; 


int main(){ 


int value=0; 

for (int i=0;i<4;i++) 
{ 
    ofstream myfile("Etc/filename"); 
    string filename ="key" + i +".txt"; 
    myfile<<value<<endl; 

} 
myfile.close(); 
} 

如何將文件保存在具有key1.txt,key2.txt,key3.txt,key4.txt的etc文件夾下? 似乎我有一個問題,ofstream myfile ...將文件名保存到特定文件夾中

任何人都可以啓發我如何改變它呢?謝謝!

+1

'串filename'從未使用過... – parrowdice

+0

@parrowdice它似乎是一個問題,ofstream的MYFILE(「文件夾/ 「+文件名); – user3292128

回答

1

您需要將正確形成的字符串作爲參數傳遞給構造函數。例如,

std::ofstream myfile("key" + std::to_string(i) + ".txt"); 

#include <sstream> // for std::ostringstream 

std::ostringstream strm; 
strm << "key" << i << ".txt"; 
std::ofstream myfile(strm.str()); 

上面假設你有一個編譯器支持C++ 11。如果你不這樣做,這在第二個例子中有輕微的變化將工作:

​​
+0

這是C++ 11。但即使在C++ 11中,我想我也會使用'std :: ostringstream'。這似乎更自然。 _或_我只使用一個語句:'std :: ofstream myfile(「key」+ std :: to_string(i)+「.txt」);'。但通常情況下,您需要一些額外的格式,至少如果數字變大;意思是'std :: ostringstream'。 (我已經做了很多次,但我一直需要使用'std :: setw'並將填充字符設置爲''0',以確保文件名正確排序。) –

+0

@JamesKanze I同意。我正在添加一個stringstream版本。我也會縮短C++ 11的版本。 – juanchopanza

+0

謝謝@JamesKanze,@ juanchopanza! – user3292128

相關問題