Bueno consegui hacer que funcione como queria, aun se puede pulir un poco para que se vea el codigo mas limpio, y todavía tendria que poner condicionales para que no se pueden incluir las dos cadenas de caracteres que tengo como puntos de inicio y fin del registro, pero funciona, y a menos que el usuario incluya algo tan raro como **************** o ######################## no da error ni resultados inesperados, al menos en lo que he probado yo.
Pongo el codigo aqui completo .
Pongo el codigo aqui completo .
Código [Seleccionar]
#include<iostream>
#include<fstream>
#include<string>
#include<vector>
#include<cstring>
#include <cstdlib>
using namespace std;
int main(){
/**********DECLARACION VARIABLES***************/
string nombre;
string apellidos;
string telefono;
string direccion;
string resp;
string seguir="si";
string r;
ifstream agenda_leer;
ofstream agenda;
string linea;
vector <string> vline;
int n=0;
string dato[6];
int cols=0;
int filas=0;;
int fils[cols];
string user[100][10];
/******************ABRIR ARCHIVO DE REGISTRO PARA COPIAR DATOS**********/
ifstream vnome_leer("registro2.txt");
while(getline(vnome_leer,linea))
vline.push_back(linea);
vnome_leer.close();
for(int i=0;i<vline.size();i++){
if (vline[i] == "***********************")
{
int I = (i+1);
filas=0;
do{
user[cols][filas]=vline[I];
filas++;
I++;
}while (vline[I]!="##########################");
fils[cols]=filas;
cols++;
}
}
cout<<endl;
for(int i=0;i<cols;i++)
{
for(int I=0;I<fils[i];I++)
{
cout<<"user"<<user[i][I]<<endl;
}
cout<<"################"<<endl;
}
/***************ABRIR AGENDA Y COPIAR DATOS DE REGISTRO***********/
agenda.open("agenda2.txt");
for(int i=0;i<cols;i++)
{
for(int I=0;I<fils[i];I++)
{
agenda<<"\n"<<user[i][I];
I++;
agenda<<user[i][I];
}
agenda<<"\n\n##########################\n";
agenda.close();
agenda.open("agenda2.txt", ios::app);
}
agenda.close();
/***************ABRIR ARCHIVO Y MOSTRARLO POR PANTALLA****************/
agenda_leer.open("agenda2.txt");
cout<<"\n\n AGENDA\n\n"<<endl;
while(getline(agenda_leer,linea))
cout<<linea<<endl;
agenda_leer.close();
/*****************ESCRITURA ARCHIVO**********************************/
/********************************************************************/
while (seguir[0]=='s' or seguir[0]=='S'){
cout<<"\n Introduce un nuevo contacto "<<endl;
resp="si";
cout<<endl;
cout<<" Nombre: ";
cin.sync();
getline (cin,nombre);
cout<<endl;
cout<<" Apellidos: ";
cin.sync();
getline(cin,apellidos);
cout<<endl;
cout<<" Telefono: ";
cin.sync();
getline(cin,telefono);
cout<<endl;
cout<<" Direccion: ";
cin.sync();
getline(cin,direccion);
cout<<endl;
n=0;
r="si";
while(r[0]=='s' or r[0]=='S')
{
cout<<" ¿Introducir algun dato mas? ";
cin.sync();
getline(cin,r);
if (r=="s" or r=="s" or r=="si" or r=="Si"
or r=="SI" or r=="sI")
{
cout<<" Introduce el nombre del dato nuevo: ";
cin.sync();
getline(cin,dato[n]);
cout<<endl;
cout<<" Introduce el dato nuevo"<<endl;
cout<<" "<<dato[n]<<": ";
n++;
cin.sync();
getline(cin,dato[n]);
cout<<endl;
n++;
}
}
cout<<" Nombre: "<<nombre<<endl
<<" Apellidos: "<<apellidos<<endl
<<" Telefono: "<<telefono<<endl
<<" Direccion: "<<direccion<<endl;
for (int i=0;i<n;i++)
{
cout<<" "<<dato[i]<<": ";
i++;
cout<<dato[i]<<endl;
}
cout<<"\n ¿Los datos son correctos? \n";
cin.sync();
getline(cin,resp);
if (resp=="s" or resp=="s" or resp=="si" or resp=="Si"
or resp=="SI" or resp=="sI"){
filas=0;
user[cols][filas]="Nombre: ";
filas++;
user[cols][filas]=nombre;
filas++;
user[cols][filas]="Apellidos: ";
filas++;
user[cols][filas]=apellidos;
filas++;
user[cols][filas]="Telefono: ";
filas++;
user[cols][filas]=telefono;
filas++;
user[cols][filas]="Direccion: ";
filas++;
user[cols][filas]=direccion;
filas++;
for (int i=0;i<n;i++)
{
user[cols][filas]=dato[i]+": ";
filas++;
i++;
user[cols][filas]=dato[i];
filas++;
}
fils[cols]=filas;
cols++;
cout<<"user"<<user[0][0]<<endl;
agenda.open("agenda2.txt");
for(int i=0;i<cols;i++)
{
for(int I=0;I<fils[i];I++)
{
agenda<<"\n"<<user[i][I];
I++;
agenda<<user[i][I];
}
agenda<<"\n\n##########################\n";
agenda.close();
agenda.open("agenda2.txt", ios::app);
}
agenda.close();
}
agenda_leer.open("agenda2.txt");
cout<<"\n\n AGENDA\n\n"<<endl;
while(getline(agenda_leer,linea))
cout<<linea<<endl;
agenda_leer.close();
cout<<"\n ¿Introducir algun otro contacto? \n";
cin.sync();
getline(cin,seguir);
}
/*******************FIN ESCRITURA ARCHIVO******************************/
/**********************************************************************/
/**************Guardamos los valores del vector vnome************/
/********************en un archivo de texto***************************/
ofstream vnome("registro2.txt");
for(int i=0;i<cols;i++)
{
vnome<<"***********************\n";
for(int I=0;I<fils[i];I++)
{
vnome<<user[i][I]<<endl;
}
vnome<<"##########################\n";
}
vnome.close();
//Ponemos un comando para que haya que pulsar ENTER para salir
cout<<"\n Presione ENTER para salir\n";
cin.get();
}