Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.05.2010, 20:45   #1
Serjuk
Форумчанин
 
Регистрация: 06.08.2009
Сообщений: 136
По умолчанию Запись в файл

Добрый вечер.Вопрос в записи в файл. Есть текст который надо записать в файл, но одну строчку не получается сделать.
Код:
static const string str1 = \
"#include \"argv[2].h\"                                                   \n"
"class ONE_argv[2] : public argv[2]                                           \n"
"{                                                                   \n"
"public:                                                             \n"
"   /**                                                              \n"
"   * Создание нового объекта                                        \n"
"   */         
};";
/*запись в файл*/
fileName = baseName + ".h";
file.open( fileName.c_str(), fstream::out );
file<< str1 << endl;
	file.close();
Записывает отлично,НО так как я использую название файлов через аргументы командной строки.Поэтому вопрос как сделать так,чтобы вместо argv[2] в файл писалось название которое я ввожу в командной строке а не argv[2]???Заранее спасибо)
Serjuk вне форума Ответить с цитированием
Старый 23.05.2010, 14:31   #2
Serjuk
Форумчанин
 
Регистрация: 06.08.2009
Сообщений: 136
По умолчанию

ребят помогите)
Serjuk вне форума Ответить с цитированием
Старый 23.05.2010, 16:32   #3
Indian
Форумчанин
 
Регистрация: 23.02.2010
Сообщений: 107
По умолчанию

Тут удобнее использовать функцию форматированного вывода из языка Си.
Код:
#include <iostream>
#include <fstream>
#include <cstdio>
using namespace std;

int main(int argc, char** argv)
{
static const string str1 = \
"#include \"%s.h\"                                                   \n"
"class ONE_%s : public %s                                           \n"
"{                                                                   \n"
"public:                                                             \n"
"   /**                                                              \n"
"   * Создание нового объекта                                        \n"
"   */         };";
	
	char arg[10];
	char str[500]; //результат
	cin>>arg;
	
	sprintf(str, str1.c_str(), arg,arg,arg); //форматированный вывод в строку(каждый %s заменяется на соответствующий аргумент).
	cout<<str;
	
	fstream f;
	f.open("test.txt",fstream::out);
	f<<str;
	f.close();
	return 0;
}

Последний раз редактировалось Indian; 23.05.2010 в 16:34.
Indian вне форума Ответить с цитированием
Старый 23.05.2010, 16:54   #4
Serjuk
Форумчанин
 
Регистрация: 06.08.2009
Сообщений: 136
По умолчанию

ошибки появились
Код:
static const string str1 =
"#include \"%s.h\"                                                   \n"
"class DBO_%s : public %s                                            \n"
"{                                                                   \n"
"public:                                                             \n"
"   /**                                                              \n"
"   * Создание нового объекта                                        \n"
"   */                                                               \n"
"   static %s dbo_new ( int &id);                                    \n"
"   /**                                                              \n"
};
char arg[10];
	char str[500]; //результат
	arg=argv[2];

	sprintf(str, str1.c_str(), arg,arg,arg); //форматированный вывод в строку(каждый %s заменяется на соответствующий аргумент).
	cout<<str;

	fstream f;
	f.open(argv[2],fstream::out);
	f<<str;
	f.close();
Ошибки такие:
Код:

 incompatible types in assignment of `char*' to `char[10]'| на строчку arg=argv[2];
Serjuk вне форума Ответить с цитированием
Старый 24.05.2010, 14:43   #5
Indian
Форумчанин
 
Регистрация: 23.02.2010
Сообщений: 107
По умолчанию

"arg[10]" и "argv[2][]" - это массивы.
Один другому присвоить, насколько я знаю, нельзя, нужно копировать.

Код:
#include <cstring>
...
strcpy(arg,argv[2]);

Последний раз редактировалось Indian; 24.05.2010 в 16:10.
Indian вне форума Ответить с цитированием
Старый 24.05.2010, 21:41   #6
Serjuk
Форумчанин
 
Регистрация: 06.08.2009
Сообщений: 136
По умолчанию

Теперь программа компилируется, но не вписывает файл ничего
Код:
static const string str1 =
"#include \"%s.h\"                                                   \n"
"class ONE_%s : public %s                                            \n"
"{                                                                   \n"
"public:                                                             \n"
"   /**                                                              \n"
"   * Создание нового объекта                                        \n"
"   */                                                               \n"
"   static %s one_new ( int &id);                                    \n"
"   /**                                                              \n"
};


string fileName=argv[2]; //получаем имя файла
string::size_type pos = fileName.find(".h");
string baseName = fileName.substr( 0, pos ); //потом извлекаем базу.
	fstream f;
fileName = "D:\\one_" + baseName + ".h";
char* arg;
	char str2[500]; //результат
	strcpy(arg,argv[2]);

	sprintf(str2, str1.c_str(), arg,arg,arg); //форматированный вывод в строку(каждый %s заменяется на соответствующий аргумент).
	cout<<str2;

	//fstream f;
f.open(fileName.c_str(),fstream::out);
	f<<str2;
	f.close();
Serjuk вне форума Ответить с цитированием
Старый 25.05.2010, 18:02   #7
Indian
Форумчанин
 
Регистрация: 23.02.2010
Сообщений: 107
По умолчанию

Код:
char* arg;
заменить на:
Код:
char arg[15];
Код:
#include <iostream>
#include <fstream>
#include <cstring>
using namespace std;

int main(int argc, char** argv)
{
static const string str1 =
"#include \"%s.h \"                                                  \n \
class ONE_%s : public %s                                            \n \
{                                                                   \n \
public:                                                             \n \
   /**                                                              \n \
   * Создание нового объекта                                        \n \
   */                                                               \n \
   static %s one_new ( int &id);                                    \n \
   /**                                                              \n"
;


	string fileName=argv[2]; //получаем имя файла
	string::size_type pos = fileName.find(".h");
	string baseName = fileName.substr( 0, pos ); //потом извлекаем базу.
	fileName = "D:\\one_" + baseName + ".h";
	
	char arg[15]; //
	char str2[700]; //строка стала больше
	
	strcpy(arg,argv[2]);

	sprintf(str2, str1.c_str(), arg,arg,arg,arg); //добавился еще один %s.
	cout<<str2;

	fstream f;
	f.open(fileName.c_str(),fstream::out);
	f<<str2;
	f.close();
	return 0;
}
Indian вне форума Ответить с цитированием
Старый 25.05.2010, 19:41   #8
Serjuk
Форумчанин
 
Регистрация: 06.08.2009
Сообщений: 136
По умолчанию

что то не пишет в файл(
Serjuk вне форума Ответить с цитированием
Старый 25.05.2010, 22:20   #9
Serjuk
Форумчанин
 
Регистрация: 06.08.2009
Сообщений: 136
По умолчанию

а если мне надо просто чтобы по команде файл открылся,это будет выглядеть так:
Код:
if(strcmp(argv[1],"print")==0){
string fileName=argv[2]; //получаем имя файла
	string::size_type pos = fileName.find(".h");
	string baseName = fileName.substr( 0, pos ); //потом извлекаем базу.
	fileName = "D:\\one_" + baseName + ".h";
	
	file.open( fileName.c_str(), fstream::out ); 
	}
Serjuk вне форума Ответить с цитированием
Старый 26.05.2010, 01:26   #10
Serik2010
Пользователь
 
Регистрация: 26.05.2010
Сообщений: 26
Хорошо

Глянь реализацию записи массива в файл тут
Serik2010 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Запись в файл (С) ya chef Помощь студентам 0 15.12.2009 13:49
Запись в файл (C++) Serant Помощь студентам 0 10.05.2009 09:49
Запись в файл soonner Общие вопросы Delphi 5 21.03.2009 01:12
Запись в файл Lemo Помощь студентам 3 01.03.2009 19:06
Запись в файл С++ Viteks Общие вопросы C/C++ 3 18.04.2008 13:18