сохранение файлов в c ++ по разным полным путям - PullRequest
1 голос
/ 16 декабря 2011

Я пишу программу на 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 ]

2 голосов
/ 16 декабря 2011

Вы можете использовать стандартные строковые потоки, такие как:

#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...
}
2 голосов
/ 16 декабря 2011

Вы можете 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 достаточно большой, достаточно. То есть в этом особом случае вместо snprintf может использоваться sprintf.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...