我正在用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”已经在我的程序中进行了评估。
答案 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...
}