|
автор: Зендель (02.02.2007 в 22:13) |
|
| Ребят, помогите новичку... скажем есть два файлика
File1.txt
Меня зовут $Name$
Моя фамилия $Family$
|
File2.txt
<Name> Вася </Name>
<Family> Пупкин </Family>
|
Нуфно на основе этих файлов сгенерить текст(вывести на экран)
Меня зовут Вася
Моя фамилия Пупкин
Я новичек в С++ буду рад помощи :) | |
|
|
|
|
|
|
|
для: Зендель
(02.02.2007 в 22:13)
| | В файлах будут только эти записи? | |
|
|
|
|
|
|
|
для: Зендель
(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;
}
|
| |
|
|
|