在c ++中以不同的完整路径保存文件

时间:2011-12-16 05:42:29

标签: c++ visual-c++

我正在用C ++编写一个程序,我需要根据程序中的计数器变量将一些.txt文件保存到不同的位置应该是什么代码?请帮忙

我知道如何使用完整路径保存文件

ofstream f;
f.open("c:\\user\\Desktop\\**data1**\\example.txt");
f.close();

我想要“c:\ user \ Desktop \ data * [CTR] * \ filedata.txt”

但是这里必须由我访问data1,data2,data3 ....等,并在每个中创建一个文本文件,那么代码是什么? 计数器变量“ctr”已经在我的程序中进行了评估。

2 个答案:

答案 0 :(得分:2)

您可以snprintf创建自定义字符串。一个例子是:

char filepath[100];
snprintf(filepath, 100, "c:\\user\\Desktop\\data%d\\example.txt", datanum);

然后你想用它做什么:

ofstream f;
f.open(filepath);
f.close();

注意: snprintf限制了可以在缓冲区上写入的最大字符数(filepath)。当*printf的参数是字符串(即使用%s)以避免缓冲区溢出时,这非常有用。在这个例子的情况下,参数是一个数字(%d),已经知道它不能超过10个字符,因此结果字符串的长度已经有一个上限而且只是使filepath缓冲区足够大就足够了。也就是说,在这种特殊情况下,可以使用sprintf代替snprintf

答案 1 :(得分:2)

您可以使用标准字符串流,例如:

#include <fstream>
#include <string>
#include <sstream>
using namespace std;

void f ( int data1 )
{
     ostringstream path;
     path << "c:\\user\\Desktop\\" << data1 << "\\example.txt";
     ofstream file(path.str().c_str());
     if (!file.is_open()) { 
          // handle error.
     }
     // write contents...
}