Форум: Форум C++Разное
Новые темы: 00
PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум C++

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Работа с текстом
 
 автор: Зендель   (02.02.2007 в 22:13)
 
 

Ребят, помогите новичку... скажем есть два файлика

File1.txt
Меня зовут $Name$
Моя фамилия $Family$


File2.txt
<Name> Вася </Name>
<Family> Пупкин </Family>



Нуфно на основе этих файлов сгенерить текст(вывести на экран)
Меня зовут Вася
Моя фамилия Пупкин

Я новичек в С++ буду рад помощи :)

  Ответить  
 
 автор: cheops   (02.02.2007 в 23:48)   письмо автору
 
   для: Зендель   (02.02.2007 в 22:13)
 

В файлах будут только эти записи?

  Ответить  
 
 автор: cheops   (03.02.2007 в 12:25)   письмо автору
 
   для: Зендель   (02.02.2007 в 22:13)
 

Если в файлах ничего кроме этих записей не будет, можно поступить следующим образом
#include <iostream>
#include <string>
#include <stdio>
using namespace std;

int main()
{

  const int LENGTH = 10000;
  int pos = 0;
  char str[LENGTH];
  string name, family, temp;

  FILE *fp;
  // Читаем файл file2 c именем
  if((fp = fopen("file2.txt""r")) == NULL)
  {
    cout << "Невозможно открыть файл: " << ferror(fp) <<  "\n";
    return 1;
  }
  while(!feof(fp))
  {
    fgets(str, LENGTH, fp);
    if(!strncmp(str,"<Name>",6))   name = str;
    if(!strncmp(str,"<Family>",8)) family = str;
  }

  // Очищаем name от тэгов <Name></Name>
  if(name.size())
  {
    pos = name.find("<Name>");
    if(pos >= 0) name = name.replace(pos,6,"");
    pos = name.rfind("</Name>");
    if(pos >= 0) name = name.replace(pos, name.size() - pos,"");
  }

  // Очищаем family от тэгов <Family></Family>
  if(family.size())
  {
    pos = family.find("<Family>");
    if(pos >= 0) family = family.replace(pos,8,"");
    pos = family.rfind("</Family>");
    if(pos >= 0) family = family.replace(pos, family.size() - pos,"");
  }

  // Закрываем файл
  fclose(fp);

  // Читаем файл file1 c текстом
  if((fp = fopen("file1.txt""r")) == NULL)
  {
    cout << "Невозможно открыть файл: " << ferror(fp) <<  "\n";
    return 1;
  }
  while(!feof(fp))
  {
    fgets(str, LENGTH, fp);
    temp = str;
    pos = temp.find("$Name");
    if(pos >= 0) temp = temp.replace(pos, 6, name);
    pos = temp.find("$Family");
    if(pos >= 0) temp = temp.replace(pos, 8, family);
    cout << temp;
  }

  // Закрываем файл
  fclose(fp);

  return 0;
}

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования