Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 22, средняя оценка - 4.86
lokinian
0 / 0 / 0
Регистрация: 09.03.2011
Сообщений: 7
#1

Создание файлов в цикле? (с++) - C++

09.03.2011, 10:14. Просмотров 3608. Ответов 6
Метки нет (Все метки)

Добрый день!
Необходимо реализовать в программе создание большого количество файлов, но пока не знаю как это можно организовать.
Конструкции типа "ofstream out ("test");" и "fout = fopen((filename, "wt");", как я понял, требуют в качестве названия файла const char, т.е. когда я пытаюсь организовать цикл с целой переменной, чтоб использовать ее в качестве названия файла то ничего не выходит. Преобразование одной переменной в другую тоже не помогло. Подскажите, как можно решить эту проблему.
В идеале количество создаваемых файлов не должно быть известно заранее, а будет, например, вводиться с клавиатуры.
Ззаранее благодарю!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.03.2011, 10:14
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Создание файлов в цикле? (с++) (C++):

Cоздание текстовых файлов в цикле - C++
Подскажите, как реализовать создание количество n текстовых файлов в цикле. В силу ограничений f.open, а точнее не соответствие типов, я...

Открытие разных файлов в цикле - C++
мне в выполнение моей задачи надо открыть 12 разных файлов извлечь от туда данные и обработать их, я впринцепи написал програму, и теперь...

Как создать 10 файлов в цикле? - C++
Всем привет. Подскажите как решить вопрос в теме? #include <fstream> using namespace std; int main() { for (int i = 1; i...

Проблемка с скачиванием не маленьких файлов в цикле - C++
Всем привет) Пишу софтину на с++, вкратце, что она делает: 1) Берет из файла links.txt ссылки, на которые нужно перейти. 2) Берет из...

Вывод массива в много файлов в цикле - C++
Доброго времени суток. Ситуация следующая: есть большой массив его надо поделить в файлы для чтение в excel в ниже приведенном случае...

Создание переменных в цикле - C++
Здравствуйте, меня интересует вопрос - насколько операция создания переменных быстра. есть функция рендеринга, которая выполняется...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Dexter
285 / 145 / 16
Регистрация: 13.10.2009
Сообщений: 164
09.03.2011, 10:38 #2
Проверил в офстрим переменные принимаются легко...

Пример ниже что точно работает.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
#include <fstream>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
    char q[255]="test";
    char buffer [33];
    for(int i=0;i<10;i++)
    {
        q[4]=0;
        itoa (i,buffer,10);
        strcat(q,buffer);
        strcat(q,".txt");
        ofstream out(q);
        out<<"test";
    }
    system("pause");
    return 0;
}
easybudda
Модератор
Эксперт CЭксперт С++
9530 / 5523 / 932
Регистрация: 25.07.2009
Сообщений: 10,608
09.03.2011, 10:42 #3
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <stdio.h>
#define PREF "file"
#define SUFF ".txt"
int main(void){
  int number_of_files, i;
  char buf[BUFSIZ];
  FILE * f;
 
  printf("Number of files: ");
  scanf("%d", &number_of_files);
 
  for ( i = 1; i <= number_of_files; ++i ){
    sprintf(buf, "%s%d%s", PREF, i, SUFF);
    if ( ( f = fopen(buf, "r") ) == NULL )
      return 1;
    fclose(f);
  }
  return 0;
}
не проверял, писал здесь
accept
4821 / 3241 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
09.03.2011, 10:43 #4
string, stringstream, s.c_str()
Mr.X
Эксперт С++
3049 / 1694 / 265
Регистрация: 03.05.2010
Сообщений: 3,867
09.03.2011, 10:48 #5
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
/////////////////////////////////////////////////////////////////////////////////////////
//Необходимо реализовать в программе создание большого количество файлов, но пока не знаю 
//как это можно организовать.
//Конструкции типа "ofstream out ("test");" и "fout = fopen((filename, "wt");", как я понял, 
//требуют в качестве названия файла const char, т.е. когда я пытаюсь организовать цикл 
//с целой переменной, чтоб использовать ее в качестве названия файла то ничего не выходит. 
//Преобразование одной переменной в другую тоже не помогло. Подскажите, как можно решить 
//эту проблему.
//В идеале количество создаваемых файлов не должно быть известно заранее, а будет, например, 
//вводиться с клавиатуры.
/////////////////////////////////////////////////////////////////////////////////////////
#include <fstream>
#include <iostream>
#include <sstream>
#include <string>
/////////////////////////////////////////////////////////////////////////////////////////
typedef std::string  T_str;
/////////////////////////////////////////////////////////////////////////////////////////
void  make_file(const T_str&  file_name)
{
    std::ofstream  ofile(file_name.c_str());
}
/////////////////////////////////////////////////////////////////////////////////////////
int main()
{
    std::locale::global(std::locale(""));
    std::cout << "Введите количество создаваемых файлов: ";
    int  files_total = 0;
    std::cin >> files_total;
    const T_str BASE_FILE_NAME      = "f";
    const T_str FILENAME_EXTENSION  = "txt";
 
    for(int  file_ind = 0; file_ind < files_total; ++file_ind)
    {
        std::ostringstream  sout;
        sout << file_ind;
        make_file(BASE_FILE_NAME + '_' + sout.str() + '.' + FILENAME_EXTENSION);    
    }
}
lokinian
0 / 0 / 0
Регистрация: 09.03.2011
Сообщений: 7
09.03.2011, 10:52  [ТС] #6
Благодарю! Сейчас буду пробовать!
lokinian
0 / 0 / 0
Регистрация: 09.03.2011
Сообщений: 7
09.03.2011, 11:56  [ТС] #7
Ок, проблема решена, itoa - как раз то, что нужно )
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.03.2011, 11:56
Привет! Вот еще темы с ответами:

Создание объектов в цикле! - C++
Подскажите пожалуйста как в цикле создать несколько одинаковых объектов, но с разными именами, либо как-нибудь, чтобы можно было их...

Создание переменных в цикле - C++
Здравствуйте. Возможно ли сделать как-то так? ... for (int i=1; i &lt; 10; i++) { ... int a &lt;i&gt;; ...

Создание нескольких массивов в цикле - C++
Возможно ли в цикле создать энное количество массивов? Например while(n!=20) {new arr&lt;n&gt;} Что то на подобие этого. В java это...

Создание объектов в цикле по заданному числу - C++
Можно ли создавать объекты класса по заданному числу в цикле? Проще говоря можно ли в С++ как то реализовать следующее: cout &lt;&lt; &quot;Введите...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
09.03.2011, 11:56
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru