2014-02-10 140 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

相关问题