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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 11.05.2010, 10:50   #11
Serjuk
Форумчанин
 
Регистрация: 06.08.2009
Сообщений: 136
По умолчанию

попытался сделать так чтобы из одного файла делало 3 файла - не получилось выдает 4 ошибки при таком коде:
Код:
 fileName = "D:\one_" + fileName + ".cpp";
    fstream file( fileName.c_str(), fstream::out ); //преобразуем строку fileName к тому виду, который принимает конструктор класса fstream.
file.close(); //закрываем, чтобы файл обновился/сохранился на диске.

    fileName = "D:\one_" + fileName + ".h";
  fstream file( fileName.c_str(), fstream::out ); //преобразуем строку fileName к тому виду, который принимает конструктор класса fstream.
file.close(); //закрываем, чтобы файл обновился/сохранился на диске.
    fileName = "D:\"" + fileName + ".one";
fstream file( fileName.c_str(), fstream::out ); //преобразуем строку fileName к тому виду, который принимает конструктор класса fstream.
file.close(); //закрываем, чтобы файл обновился/сохранился на диске.
4 Ошибки такие (они повторяются по 2 раза):
Цитата:
redeclaration of `std::fstream file'|
std::fstream file' previously declared here|
Serjuk вне форума Ответить с цитированием
Старый 11.05.2010, 16:58   #12
Indian
Форумчанин
 
Регистрация: 23.02.2010
Сообщений: 107
По умолчанию

Код:
fileName = "D:\one_" + fileName + ".cpp";
    fstream file( fileName.c_str(), fstream::out ); //преобразуем строку fileName к тому виду, который принимает конструктор класса fstream.
file.close(); //закрываем, чтобы файл обновился/сохранился на диске.
Экземпляр класса fstream уже есть - это file.
Его не нужно объявлять снова.

Код:
fstream file;

file.open( fileName.c_str(), fstream::out );
file.close();

fileName="1"+fileName; //fileName надо менять, иначе будет перезаписываться один и тот же файл.
file.open( fileName.c_str(), fstream::out );
file.close();

fileName="2"+fileName;
file.open( fileName.c_str(), fstream::out );
file.close();

fileName="3"+fileName;
file.open( fileName.c_str(), fstream::out );
file.close();

Построчная запись в файл:
Код:
#include <iostream>
#include <fstream>
using namespace std;

int main(int argc, char** argv)
{
	const char* str="int f ( int a, int b){";
	const char* str2="a=b; }";
	
	fstream file("test.txt",fstream::out);
	file<< str << endl << str2 << endl;
	file.close();
	return 0;
}
Indian вне форума Ответить с цитированием
Старый 11.05.2010, 17:11   #13
Serjuk
Форумчанин
 
Регистрация: 06.08.2009
Сообщений: 136
По умолчанию

Цитата:
fstream file;

file.open( fileName.c_str(), fstream:ut );
file.close();

fileName="1"+fileName; //fileName надо менять, иначе будет перезаписываться один и тот же файл.
file.open( fileName.c_str(), fstream:ut );
file.close();

fileName="2"+fileName;
file.open( fileName.c_str(), fstream:ut );
file.close();

fileName="3"+fileName;
file.open( fileName.c_str(), fstream:ut );
file.close();
а как же тогда строчки :
Цитата:
fileName = "D:\one_" + fileName + ".cpp";
fileName = "D:\one_" + fileName + ".h";
fileName = "D:\"" + fileName + ".one";

А удаление этих 3 файлов будет выглядить так ?или по-другому
Код:
if ( strcmp(argv[1],"delete")==0)

     for (i=0;i<argc;i++)
     if ( argc!=3){
        printf("Введите правильно операцию : операция delete <filename>");
        exit(1);}
 printf("Стереть созданные файлы %s? (Y/N):",argv[1]);
 gets(str);
 if (toupper(*str)=='Y')
 remove("D:\one_" + fileName + ".cpp";);
 remove("D:\one_" + fileName + ".h";);
 remove("D:\"" + fileName + ".one";);
 if (remove(argv[1])){
     printf("Невозможно удалить файл.\n");
     exit(1);
 }
Serjuk вне форума Ответить с цитированием
Старый 11.05.2010, 17:29   #14
Indian
Форумчанин
 
Регистрация: 23.02.2010
Сообщений: 107
По умолчанию

Не заметил. Кстати, при "fileName="something"+fileName; " строка нарастает.
Поэтому:
Код:
fstream file;
string baseName="main"; //например

fileName = "D:\\one_" + baseName + ".cpp";
file.open( fileName.c_str(), fstream:out );
file.close();

fileName = "D:\\one_" + baseName + ".h"; 
file.open( fileName.c_str(), fstream:out );
file.close();

fileName = "D:\\" + baseName + ".one"; 
file.open( fileName.c_str(), fstream:out );
file.close();
А удалять так:
Код:
remove("D:\\one_" + baseName + ".cpp");
remove("D:\\one_" + baseName + ".h");
remove("D:\\" + baseName + ".one");

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

Цитата:
Кстати, при "fileName="something"+fileName; " строка нарастает.
всмысле нарастает?
а можно
Цитата:
string baseName="main";
заменить на
Цитата:
string baseName=argv[2];
?Название файла брать из командной строки.
Serjuk вне форума Ответить с цитированием
Старый 11.05.2010, 17:47   #16
Indian
Форумчанин
 
Регистрация: 23.02.2010
Сообщений: 107
По умолчанию

Код:
string fileName="main";
fileName = "D:\one_" + fileName + ".cpp";
fileName = "D:\one_" + fileName + ".h"; 
fileName = "D:\"" + fileName + ".one";
Получим:
D:"D:one_D:one_main.cpp.h.one
Цитата:
string baseName="main";
заменить на
string baseName=argv[2];
Можно.
Indian вне форума Ответить с цитированием
Старый 12.05.2010, 20:32   #17
Serjuk
Форумчанин
 
Регистрация: 06.08.2009
Сообщений: 136
По умолчанию

Опять я))че то опять ошибки появляются

Код:

  fstream file;
string baseName=argv[2]; //например
string::size_type pos = baseName.find(".h");

//ищем в строке fileName позицию, где начинается ".h"
//например, в строке "main.h" это 4.

    if( pos == string::npos ){
	cout << "Неправильное имя файла\n";
	return 1;
    }
       fileName = baseName.substr( 0, pos );
fileName = "D:\\one_" + baseName + ".cpp";
file.open( fileName.c_str(), fstream:out );
file.close();

fileName = "D:\\one_" + baseName + ".h";
file.open( fileName.c_str(), fstream:out );
file.close();

fileName = "D:\\" + baseName + ".one";
file.open( fileName.c_str(), fstream:out );
file.close();
Ошибки :
Цитата:
1) `fileName' was not declared in this scope| на строку fileName = "D:\\one_" + baseName + ".cpp";
2) expected primary-expression before ':' token| на строку file.open( fileName.c_str(), fstreamut );
3) expected primary-expression before ':' token| на строку file.open( fileName.c_str(), fstreamut );
4) expected primary-expression before ':' token| на строку file.open( fileName.c_str(), fstreamut );

Serjuk вне форума Ответить с цитированием
Старый 12.05.2010, 21:14   #18
Indian
Форумчанин
 
Регистрация: 23.02.2010
Сообщений: 107
По умолчанию

Код:
fstream file;
string fileName=argv[2]; //получаем имя файла
string::size_type pos = fileName.find(".h"); //потом ищем расширение

    if( pos == string::npos ){
	cout << "Неправильное имя файла\n";
	return 1;
    }
string baseName = fileName.substr( 0, pos ); //потом извлекаем базу.
fileName = "D:\\one_" + baseName + ".cpp";
file.open( fileName.c_str(), fstream:out );
file.close();

fileName = "D:\\one_" + baseName + ".h";
file.open( fileName.c_str(), fstream:out );
file.close();

fileName = "D:\\" + baseName + ".one";
file.open( fileName.c_str(), fstream:out );
file.close();
Indian вне форума Ответить с цитированием
Старый 12.05.2010, 21:41   #19
Serjuk
Форумчанин
 
Регистрация: 06.08.2009
Сообщений: 136
По умолчанию

Цитата:
1) `fileName' was not declared in this scope| на строку fileName = "D:\\one_" + baseName + ".cpp";
этой ошибки нету, а
эти 3 остались...
Код:
2) expected primary-expression before ':' token| на строку file.open( fileName.c_str(), fstream:out );
3) expected primary-expression before ':' token| на строку file.open( fileName.c_str(), fstream:out );
4) expected primary-expression before ':' token| на строку file.open( fileName.c_str(), fstream:out );
Serjuk вне форума Ответить с цитированием
Старый 12.05.2010, 21:43   #20
Serjuk
Форумчанин
 
Регистрация: 06.08.2009
Сообщений: 136
По умолчанию

Все исправил надо было еще в этих строчках по : добавить))
Serjuk вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не создается файл при алгоритме Вопрос-Ответ _PROGRAMM_ PHP 8 30.04.2010 20:40
Не создается объектный файл TASM Misha_M. Помощь студентам 0 27.12.2009 15:34
Почему не компилируется cpp-файл? TwiX Общие вопросы C/C++ 3 27.09.2009 19:01
Почему не компилируется cpp-файл? TwiX Общие вопросы C/C++ 4 25.09.2009 23:57
Почему файл не загружается на форум? Вадим Буренков О форуме и сайтах клуба 8 15.07.2009 09:07