Ayuda con C++, desesperacion absoluta

Hola a todos, necesito un poco de ayuda con esta funcion porque ya no se como hacerla. La funcion consiste en lo siguiente:

Insertar una nueva lınea en la posicion actual del cursor. Si la lınea fuera “hola, mundo.” y la columna actual la 4, la lınea actual quedarıa con “hol”, y se añadirıa una nueva lınea a continuacion con “a, mundo.”; evidentemente las lıneas que habıa originalmente se deben desplazar hacia abajo para dejar sitio a la nueva lınea. Si la posicion actual del cursor es la posicion final, la nueva lınea que se creara estara en blanco. El cursor se debe mover a la primera columna de la nueva lınea (en el ejemplo, a la posicion de la “a”). En el caso de que el texto tenga ya el numero maximo de lıneas permitidas,
al insertar una nueva lınea se sobrepasarıa dicho numero, por
lo que se debe emitir el mensaje de error y no insertar la nueva lınea:
E6: TAMAÑO MAXIMO ALCANZADO (1000 LINEAS).


mi intencion es 1º mover todas las lineas del texto hacia abajo y luego ajustar la parte del texto que se queda en cada linea pero no lo consigo

vectorTexto esta definido como: string tabla[1000] y lo demas son enteros


concretamente falla lo que señalo asi "****** falla esta linea"(solo fallan 2 lineas):


si alguien me hecha una manilla le estare eternamente agradecido :D



void InsertarNuevaLinea(string &vectorTexto, int &linea, int &columna, int &nlineas){

   int i,j,tamLinea;

   string aux, aux2, aux3, s, copia;

   aux2=vectorTexto[linea];

   tamLinea=aux2.length();

   string cad, cad1, str1, str2;   

   char vector[tamLinea+1];

   strcpy(vector, aux2.c_str());

   if((nlineas+1)>tVector)
   {
      cout<<"E6: TAMAÑO MAXIMO ALCANZADO (1000 LINEAS)."<<endl;
      
      exit(0);
   }
   

   aux=vectorTexto[linea+1];

   vectorTexto[i+1]=vectorTexto[linea];

   for(i=linea+2;i<nlineas+1;i++){
         

      vectorTexto[linea]=vectorTexto[i];

      vectorTexto[i]=aux;

      aux=vectorTexto[linea];

   }
   
   linea=linea+1;

   cad=vectorTexto[linea];
      
   for(i=columna;i<=tamLinea;i++){
      
      str1[i]=cad[i];
      
   }
   
   vectorTexto[linea]=str1;  ****** falla esta linea
   

   for(i=0;i<columna;i++){

      str2[i]=cad[i];

   }

   vectorTexto[linea-1]=str2; ****** falla esta linea
}








Pues no me he enterado lo q quieres hacer.... ein?
Lo primero que veo ahí es que el array vectorTexto lo estás usando como una matriz bidimensional, en vez de como un array unidimensional, mientras que dices que lo tienes declarado de esta última forma. [agggtt]
Sí como dice Yoda, estas intentando meter un string en una posición de otro string, no? De todas formas, recuerda de utilizar strcpy cuando iguales string's.
3 respuestas