urgente, modificar una variable PARA MAÑANA
Publicado por Cris (44 intervenciones) el 11/04/2006 14:40:55
hola muy buenas a todos. TEngo el siguiente programa:
Quiero modificar el valor de una variable especifica de un fichero,
para ello la busco hasta situarme en ella, muestro la linea por pantalla:
<FONT FACE="Comic Sans Ms" COLOR="Red" Size="9"><B><I>
De esta linea kiero modificar solo FONT FACE y para ello muestro el contenido :
COmic Sans Ms, pido al usuario la introduccion del nuevo valor
y recorro el fichero hasta posicionarme de nuevo en esa variable pero cambio el contenido
por el nuevo.
Todo esto ya esta programado, lo unico que no me sale es como hacer lo ultimo, es decir:
tipo de letra //variable a modificar
<FONT FACE="Comic Sans Ms" COLOR="Red" Size="9"><B><I> //linea donde se encuentra
Comic Sans Ms //contenido de variable
Introduce el nuevo valor: arial
<FONT FACE="arial" COLOR="Red" Size="9"><B><I> *********ESto no me sale*******
El codigo para hacer esto es:menu_texto, modificar_letra, pedir_texto, REESCRIBIR_TExTO
#include <iostream>
#include <string>
#include <fstream>
using namespace std;
void texto::menu_texto(string line_aux)
{
int opc;
do
{
system("cls");
cout << " MENU TEXTO" << endl;
cout << "1. Tipo de letra" << endl;
cout << "2. Tamano" << endl;
cout << "3. Color" << endl;
cout << "4. Subrayado/Negrita/Cursiva" << endl;
cout << "5. Leyenda" << endl;
cout << "6. Salir" << endl;
cout << "Elije la opcion que deseas modificar el texto" << endl;
cin >> opc;
const int SIZE=2000;
char *line=new char[2000];
string copy;
copy="<FONT FACE";
ifstream in ("PaginaPrincipal1.html");
switch(opc)
{
case 1:
cout << "Tipo de Letra" << endl;
while (in.getline(line, SIZE)!=NULL)
{
if (line==line_aux)
{
break;
}
}
cout << line << endl;
int u;
do
{
in.getline(line,SIZE);
u=0;
for(int i=0;i<copy.size();++i)
if(copy.at(i)!=line[i])
break;
else
u++;
}while(u<10);
cout << line << endl;
fflush(stdin);
cin.get();
modificar_letra(line);
pedir_texto("tipoletra",1);
reescribir_texto(line);
break;
case 2:
cout << "Tamano" << endl;
while (in.getline(line, SIZE)!=NULL)
{
if (line==line_aux)
{
break;
}
}
cout <<line<<endl;
do
{
in.getline(line,SIZE);
u=0;
for(int i=0;i<copy.size();++i)
if(copy.at(i)!=line[i])
break;
else
u++;
}while(u<10);
cout << line << endl;
fflush(stdin);
cin.get();
modificar_letra(line);
pedir_texto("Tamano", 2);
reescribir_texto(line);
break;
case 3:
cout << "Color" << endl;
while (in.getline(line, SIZE)!=NULL)
{
if (line==line_aux)
{
break;
}
}
cout <<line<<endl;
do
{
in.getline(line,SIZE);
u=0;
for(int i=0;i<copy.size();++i)
if(copy.at(i)!=line[i])
break;
else
u++;
}while(u<10);
cout << line << endl;
fflush(stdin);
cin.get();
modificar_letra(line);
pedir_texto("Color", 3);
reescribir_texto(line);
break;
case 4:
cout << "Subrayado" << endl;
while (in.getline(line, SIZE)!=NULL)
{
if (line==line_aux)
{
break;
}
}
cout <<line<<endl;
do
{
in.getline(line,SIZE);
u=0;
for(int i=0;i<copy.size();++i)
if(copy.at(i)!=line[i])
break;
else
u++;
}while(u<10);
cout << line << endl;
fflush(stdin);
cin.get();
modificar_letra(line);
pedir_texto("Subrayado", 4);
reescribir_texto(line);
break;
case 5:
cout << "Leyenda" << endl;
while (in.getline(line, SIZE)!=NULL)
{
if (line==line_aux)
{
break;
}
}
cout <<line<<endl;
do
{
in.getline(line,SIZE);
u=0;
for(int i=0;i<copy.size();++i)
if(copy.at(i)!=line[i])
break;
else
u++;
}while(u<10);
in.getline(line,SIZE);
cout << line << endl;
fflush(stdin);
cin.get();
modificar_letra(line);
pedir_texto("Leyenda", 5);
reescribir_texto(line);
break;
}
}while(opc!=6);
}
string texto::modificar_letra(string a)
{
string tipo="FACE=\"";
tipoletra="";
string b;
int i=0;
int t=0;
do{
if (a.at(i)!=tipo[t])
{
++i;
t=0;
}
else
{
++t;
++i;
}
}while (t<6);
fflush(stdin);
cin.get();
while (a.at(i)!='"')
{
b=a.at(i);
tipoletra.append(b);
++i;
}
cout <<tipoletra<<endl;
fflush(stdin);
cin.get();
//COLOR//
tipo="COLOR=\"";
string colour="";
t=0;
do{
if (a.at(i)!=tipo[t])
{
++i;
t=0;
}
else
{
++t;
++i;
}
}while (t<7);
fflush(stdin);
cin.get();
while (a.at(i)!='"')
{
b=a.at(i);
colour.append(b);
++i;
}
cout<<colour<<endl;
fflush(stdin);
cin.get();
//tamaño
tipo="Size=\"";
string tamano="";
t=0;
do{
if(a.at(i)!=tipo[t])
{
++i;
t=0;
}
else
{
++t;
++i;
}
}while (t<6);
fflush(stdin);
cin.get();
while (a.at(i)!='"')
{
b=a.at(i);
tamano.append(b);
++i;
}
cout <<tamano<<endl;
fflush(stdin);
cin.get();
// SUBRAYADO//
string subrayo="";
for(i=a.size()-1;i<a.size()-10;--i)
{
if (a.at(i)=='B' || a.at(i)=='S' || a.at(i)=='I')
{
b=a.at(i-1);
subrayo.append(b);
b=a.at(i);
subrayo.append(b);
b=a.at(i+1);
subrayo.append(b);
}
}
cout<<subrayo<<endl;
fflush(stdin);
cin.get();
return("Hola");
}
void texto::pedir_texto (string a, int b)
{
string letras;
string tamanio;
string colores;
string ley;
switch (b)
{
case 1:{
cout <<"introduce "<<a <<" nueva"<<endl;
cin>>letras;
}
break;
case 2: {
cout <<"introduce "<<a<<" nueva"<<endl;
cin>>tamanio;
}
break;
case 3: {
cout <<"introduce "<<a<<" nueva"<<endl;
cin>>colores;
}
break;
case 4: {/*
cout <<"introduce "<<a<<" nueva<<endl;
cin>>S;
*/
}
break;
case 5: {
cout <<"introduce "<<a<<" nueva"<<endl;
cin>>ley;
}
break;
}
}
void texto::reescribir_texto (string c)**************ESTO NO SE MODIFICAR LOS VALORES****
{
const int SIZE =2000;
char *line =new char [SIZE];
string line_aux;
ifstream in ("PaginaPrincipal1.html");
while (in.getline(line, SIZE)!=NULL)
{
if (line==line_aux)
{
break;
}
}
cout<<line<<endl;
fflush(stdin);
cin.get();
string a="<FONT FACE";
int b;
do
{
in.getline(line,SIZE);
b=0;
for (int i=0; i<a.size();++i)
if (a.at(i)!=line[i])
break;
else
b++;
} while (b<10);
cout << line << endl;
fflush(stdin);
cin.get();
}
Quiero modificar el valor de una variable especifica de un fichero,
para ello la busco hasta situarme en ella, muestro la linea por pantalla:
<FONT FACE="Comic Sans Ms" COLOR="Red" Size="9"><B><I>
De esta linea kiero modificar solo FONT FACE y para ello muestro el contenido :
COmic Sans Ms, pido al usuario la introduccion del nuevo valor
y recorro el fichero hasta posicionarme de nuevo en esa variable pero cambio el contenido
por el nuevo.
Todo esto ya esta programado, lo unico que no me sale es como hacer lo ultimo, es decir:
tipo de letra //variable a modificar
<FONT FACE="Comic Sans Ms" COLOR="Red" Size="9"><B><I> //linea donde se encuentra
Comic Sans Ms //contenido de variable
Introduce el nuevo valor: arial
<FONT FACE="arial" COLOR="Red" Size="9"><B><I> *********ESto no me sale*******
El codigo para hacer esto es:menu_texto, modificar_letra, pedir_texto, REESCRIBIR_TExTO
#include <iostream>
#include <string>
#include <fstream>
using namespace std;
void texto::menu_texto(string line_aux)
{
int opc;
do
{
system("cls");
cout << " MENU TEXTO" << endl;
cout << "1. Tipo de letra" << endl;
cout << "2. Tamano" << endl;
cout << "3. Color" << endl;
cout << "4. Subrayado/Negrita/Cursiva" << endl;
cout << "5. Leyenda" << endl;
cout << "6. Salir" << endl;
cout << "Elije la opcion que deseas modificar el texto" << endl;
cin >> opc;
const int SIZE=2000;
char *line=new char[2000];
string copy;
copy="<FONT FACE";
ifstream in ("PaginaPrincipal1.html");
switch(opc)
{
case 1:
cout << "Tipo de Letra" << endl;
while (in.getline(line, SIZE)!=NULL)
{
if (line==line_aux)
{
break;
}
}
cout << line << endl;
int u;
do
{
in.getline(line,SIZE);
u=0;
for(int i=0;i<copy.size();++i)
if(copy.at(i)!=line[i])
break;
else
u++;
}while(u<10);
cout << line << endl;
fflush(stdin);
cin.get();
modificar_letra(line);
pedir_texto("tipoletra",1);
reescribir_texto(line);
break;
case 2:
cout << "Tamano" << endl;
while (in.getline(line, SIZE)!=NULL)
{
if (line==line_aux)
{
break;
}
}
cout <<line<<endl;
do
{
in.getline(line,SIZE);
u=0;
for(int i=0;i<copy.size();++i)
if(copy.at(i)!=line[i])
break;
else
u++;
}while(u<10);
cout << line << endl;
fflush(stdin);
cin.get();
modificar_letra(line);
pedir_texto("Tamano", 2);
reescribir_texto(line);
break;
case 3:
cout << "Color" << endl;
while (in.getline(line, SIZE)!=NULL)
{
if (line==line_aux)
{
break;
}
}
cout <<line<<endl;
do
{
in.getline(line,SIZE);
u=0;
for(int i=0;i<copy.size();++i)
if(copy.at(i)!=line[i])
break;
else
u++;
}while(u<10);
cout << line << endl;
fflush(stdin);
cin.get();
modificar_letra(line);
pedir_texto("Color", 3);
reescribir_texto(line);
break;
case 4:
cout << "Subrayado" << endl;
while (in.getline(line, SIZE)!=NULL)
{
if (line==line_aux)
{
break;
}
}
cout <<line<<endl;
do
{
in.getline(line,SIZE);
u=0;
for(int i=0;i<copy.size();++i)
if(copy.at(i)!=line[i])
break;
else
u++;
}while(u<10);
cout << line << endl;
fflush(stdin);
cin.get();
modificar_letra(line);
pedir_texto("Subrayado", 4);
reescribir_texto(line);
break;
case 5:
cout << "Leyenda" << endl;
while (in.getline(line, SIZE)!=NULL)
{
if (line==line_aux)
{
break;
}
}
cout <<line<<endl;
do
{
in.getline(line,SIZE);
u=0;
for(int i=0;i<copy.size();++i)
if(copy.at(i)!=line[i])
break;
else
u++;
}while(u<10);
in.getline(line,SIZE);
cout << line << endl;
fflush(stdin);
cin.get();
modificar_letra(line);
pedir_texto("Leyenda", 5);
reescribir_texto(line);
break;
}
}while(opc!=6);
}
string texto::modificar_letra(string a)
{
string tipo="FACE=\"";
tipoletra="";
string b;
int i=0;
int t=0;
do{
if (a.at(i)!=tipo[t])
{
++i;
t=0;
}
else
{
++t;
++i;
}
}while (t<6);
fflush(stdin);
cin.get();
while (a.at(i)!='"')
{
b=a.at(i);
tipoletra.append(b);
++i;
}
cout <<tipoletra<<endl;
fflush(stdin);
cin.get();
//COLOR//
tipo="COLOR=\"";
string colour="";
t=0;
do{
if (a.at(i)!=tipo[t])
{
++i;
t=0;
}
else
{
++t;
++i;
}
}while (t<7);
fflush(stdin);
cin.get();
while (a.at(i)!='"')
{
b=a.at(i);
colour.append(b);
++i;
}
cout<<colour<<endl;
fflush(stdin);
cin.get();
//tamaño
tipo="Size=\"";
string tamano="";
t=0;
do{
if(a.at(i)!=tipo[t])
{
++i;
t=0;
}
else
{
++t;
++i;
}
}while (t<6);
fflush(stdin);
cin.get();
while (a.at(i)!='"')
{
b=a.at(i);
tamano.append(b);
++i;
}
cout <<tamano<<endl;
fflush(stdin);
cin.get();
// SUBRAYADO//
string subrayo="";
for(i=a.size()-1;i<a.size()-10;--i)
{
if (a.at(i)=='B' || a.at(i)=='S' || a.at(i)=='I')
{
b=a.at(i-1);
subrayo.append(b);
b=a.at(i);
subrayo.append(b);
b=a.at(i+1);
subrayo.append(b);
}
}
cout<<subrayo<<endl;
fflush(stdin);
cin.get();
return("Hola");
}
void texto::pedir_texto (string a, int b)
{
string letras;
string tamanio;
string colores;
string ley;
switch (b)
{
case 1:{
cout <<"introduce "<<a <<" nueva"<<endl;
cin>>letras;
}
break;
case 2: {
cout <<"introduce "<<a<<" nueva"<<endl;
cin>>tamanio;
}
break;
case 3: {
cout <<"introduce "<<a<<" nueva"<<endl;
cin>>colores;
}
break;
case 4: {/*
cout <<"introduce "<<a<<" nueva<<endl;
cin>>S;
*/
}
break;
case 5: {
cout <<"introduce "<<a<<" nueva"<<endl;
cin>>ley;
}
break;
}
}
void texto::reescribir_texto (string c)**************ESTO NO SE MODIFICAR LOS VALORES****
{
const int SIZE =2000;
char *line =new char [SIZE];
string line_aux;
ifstream in ("PaginaPrincipal1.html");
while (in.getline(line, SIZE)!=NULL)
{
if (line==line_aux)
{
break;
}
}
cout<<line<<endl;
fflush(stdin);
cin.get();
string a="<FONT FACE";
int b;
do
{
in.getline(line,SIZE);
b=0;
for (int i=0; i<a.size();++i)
if (a.at(i)!=line[i])
break;
else
b++;
} while (b<10);
cout << line << endl;
fflush(stdin);
cin.get();
}
Valora esta pregunta


0