Модераторы: bsa

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Один вопрос по файлам, Как лучше сделать (синтаксис) 
V
    Опции темы
Goodilla
Дата 26.5.2008, 17:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 49
Регистрация: 10.10.2007

Репутация: 1
Всего: 1



Привет. У меня дилема: 

Код

char fname;
cout <<"Plese enter the file name\n" <<endl;
cin >>fname;

string line;
  ifstream myfile (Что писать тут??); // открытие файла


Возможно ли так риализовать открытие файла, выбранного пользователем? Если да, то подскажите, пожалуйста, какой синтаксис или валидный код. Заранее спасибо!
PM MAIL   Вверх
anatox91
Дата 26.5.2008, 17:52 (ссылка) |   (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


программист-самоучка
**


Профиль
Группа: Участник
Сообщений: 699
Регистрация: 12.1.2008
Где: ++Украина.Крым++

Репутация: 1
Всего: 13



вроде так
Код

string name;
std::cout << "Please, enter the file name:" << std::endl;
std::cin >> name;

ifstream myfile(name.c_str());



--------------------

The code is the design ©

Sony VAIO VGN-FW480J

user posted image
PM MAIL ICQ   Вверх
Goodilla
Дата 26.5.2008, 17:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 49
Регистрация: 10.10.2007

Репутация: 1
Всего: 1



Спасибо, работает! Тему можно закрыть!
PM MAIL   Вверх
rrrFer
Дата 26.5.2008, 18:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 208
Регистрация: 11.5.2008
Где: Красноярск

Репутация: 0
Всего: 1



Goodilla, 
Цитата

Возможно ли

так:?
Код

char cs[10];
cout<<"Plese enter the file name\n"<<endl;
cin >>cs;
ifstream inp(cs) ;

не успел smile
anatox91
извини за плагиат smile

Это сообщение отредактировал(а) rrrFer - 26.5.2008, 18:06
PM MAIL WWW ICQ   Вверх
Goodilla
Дата 26.5.2008, 18:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 49
Регистрация: 10.10.2007

Репутация: 1
Всего: 1



Спасибо, это тоже возьму на заметку. А может вы ещё и парсить умеете? А то есть вопрос. 

После этого, как открыл файл, хочу читать его по символу, чтобы потом либо заменить его либо вообще удалить и распечатать в новый файл. 

Вопрос в том, как читать по символу? По строке так:

Код

while (! myfile.eof() )// проверка конца файла
    {
    getline (myfile,line); // читаем содеражание построчно

// пытался сделать здесь так:

char symbol;

line->symbol; 

//и после подключить модуль по обработке инфы на переменной symbol.
    cout << line << endl; // убираем не нужные символы
    }


Но что то не правильно, скорей чтение по символу

Это сообщение отредактировал(а) Goodilla - 26.5.2008, 18:17
PM MAIL   Вверх
anatox91
Дата 26.5.2008, 18:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


программист-самоучка
**


Профиль
Группа: Участник
Сообщений: 699
Регистрация: 12.1.2008
Где: ++Украина.Крым++

Репутация: 1
Всего: 13



http://www.cplusplus.com/reference/iostream/istream/get.html
Цитата

istream& get ( char& c );
Extracts a character from the stream and stores it in c.



--------------------

The code is the design ©

Sony VAIO VGN-FW480J

user posted image
PM MAIL ICQ   Вверх
Goodilla
Дата 26.5.2008, 18:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 49
Регистрация: 10.10.2007

Репутация: 1
Всего: 1



Спасибо, сам роюсь на этом сайте, и никак не найти. То, что нужно!
PM MAIL   Вверх
Goodilla
Дата 26.5.2008, 20:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 49
Регистрация: 10.10.2007

Репутация: 1
Всего: 1



Извините, что так много вопросов. Но вот ещё небольшая проблемка. 

Задача: Удалить всё, что после символа.

Код

   if (s == symbol[3]) 
       {
            
       do
          {
          s = myfile.get(); 
          newfile <<" ";
          cout <<" ";
          }
          while (s == symbol[1]);
       }
       else
       {
           newfile << s;
           cout << s;
       }
    }


Проблема заключается в следующем, он не может перескочить через цикл - это логично, а следовательно он переключает символ только один раз, скажем со 2ого на третий. А также удаляет только их. Мне требуется, чтобы удалял все буквы или цифры от символа до символа. 
Для чего я использовал блог do while,  но этого мало. Что посоветуете. Кстати, хотел применить команду Delete, с синтаксисом проблемы.
PM MAIL   Вверх
bsa
Дата 27.5.2008, 14:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



Goodilla, что-то ты не очень ясно выразился. Что значит "удалить все, что после символа"? Ты, судя по коду, не пытаешься удалять, а пытаешься менять на пробелы. Причем, цикл у тебя выполняется скорее всего только один раз, т.е. пока считанный из файла символ равен symbol[1]. Более того, а что ты будешь делать, когда достигнешь конца файла? Я не заметил выхода из цикла по этому условию.
PM   Вверх
Goodilla
Дата 27.5.2008, 14:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 49
Регистрация: 10.10.2007

Репутация: 1
Всего: 1



Я имею ввиду следующее: Требуется удалить (хотя я заменяю на пробелы, кстати это ошибочно, тож сейчас понял) все содержимое между двумя символами а именно между и включая их </.....> вот так. Скажем 
было <transport></transport>, 
результат: transport  
или 
<transport></> результат: transport

Вот что то в этом роде. А до этого я заменяю пробелами для корректировки лесенки. Сорри за некоторые ошибки в коде. Там только кусок
PM MAIL   Вверх
rrrFer
Дата 27.5.2008, 15:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 208
Регистрация: 11.5.2008
Где: Красноярск

Репутация: 0
Всего: 1



Goodilla, 
я могу посоветовать только писать символы в другой файл, а потом удалить старый файл и переименовать новый - так по-любому проще будет
PM MAIL WWW ICQ   Вверх
Goodilla
Дата 27.5.2008, 19:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 49
Регистрация: 10.10.2007

Репутация: 1
Всего: 1



Я так и делаю, вопрос не в том. Мне требуется не вписывать символы после определённого символа. Иными словами не вписывать содержимое после определённого символа, при каком то условии.

Пример:
Код


if (s == '[')
{
//сдесь требуется написать блог, который будет удалять все символы после символа в условии if, а
 //именно символа "[". Таким образом каждый последующий символ будет удалён, пока не достигнет 
//выполнения другого условия. Пример ниже.
}
  else
  {
  cout << s;
  }


Пример условия удаления:

Код

do
{
//сдесь именно то, что удалит символы между скобками и сами скобки
}while (s == ']')


Плохо объяснил, если да, скажите, попробую ещё раз поподробнее. Извините, за бестактно изложенные мысли.
PM MAIL   Вверх
rrrFer
Дата 27.5.2008, 19:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 208
Регистрация: 11.5.2008
Где: Красноярск

Репутация: 0
Всего: 1



Goodilla
удалить что-то из середины файла не так просто...
потому я и посоветовал, что то вроде этого:
Код

while(s!='['){
//записываешь s в конец вспомогательного файла
    while(s!=']"){
        //чистаешь следующий символ
    }
      //чистаешь следующий символ
}


Это сообщение отредактировал(а) rrrFer - 27.5.2008, 19:36
PM MAIL WWW ICQ   Вверх
Goodilla
Дата 27.5.2008, 19:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 49
Регистрация: 10.10.2007

Репутация: 1
Всего: 1



Дело в том, что я считываю по символу в с одного файла, и после обработки записываю данный символ в другой файл. Если честно, то немного не понял вашу концепцию rrrFer. Если можно, то поподробнее.
PM MAIL   Вверх
bsa
Дата 27.5.2008, 19:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



Goodilla, ты пишешь парсер XML что ли? Может готовый тебя устроит (tinyxml, например)?
А так с твоих слов не очень понятно, какой результат будет в случае, если файл содержит эти три строки:
Код
<transport name="train" cost="100">Some
text
message</transport>

PM   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0555 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.