elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  [C++] Error con ficheros.
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [C++] Error con ficheros.  (Leído 924 veces)
Zodiak98

Desconectado Desconectado

Mensajes: 120


Ver Perfil
[C++] Error con ficheros.
« en: 26 Noviembre 2016, 19:21 pm »

Verán, estoy haciendo un programa simple que lee desde un archivo, el trabajo del programa es sustituir cada espacio en blanco por un guión bajo.

El programa ya está hecho (más o menos), la cosa es que, no me da ningún tipo de error sino que se crashea y deja de funcionar en su ejecución.

Acá el código que llevo hasta ahora:
Código
  1. #include <iostream>
  2. #include <fstream>
  3. #include <string>
  4.  
  5. using namespace std;
  6.  
  7. //Función que devuelve una línea con cada espacio en blanco con un guión bajo
  8. string reemplazar(string linea);
  9.  
  10. int main() {
  11.    //Creación del archivo.
  12.    fstream archivo("archivo.txt", ios::in | ios::out);
  13.    //Variable para almacenar cada línea del archivo.
  14.    string linea;
  15.    //Variable para reemplazar todo lo que está en el archivo.
  16.    string dArchivo = "";
  17.  
  18.    //Comprobando que el archivo exista.
  19.    if(!archivo) {
  20.        cerr << "Error: El archivo no existe." << endl;
  21.        return -1;
  22.    }
  23.  
  24.    //Leyendo cada línea del fichero.
  25.    while(!archivo.eof()) {
  26.        //Obteniendo línea por línea desde el archivo.
  27.        getline(archivo, linea);
  28.  
  29.        //Almacenando las líneas con los guiones bajos ya reemplazados.
  30.        dArchivo += reemplazar(linea) + "\n";
  31.    }
  32.  
  33.    //Sobreescribiendo el archivo con los guiones bajos ya establecidos.
  34.    archivo << dArchivo;
  35.  
  36.    //Cerrando el archivo.
  37.    archivo.close();
  38.  
  39.    return 0;
  40. }
  41.  
  42. //Implementando el método para reemplazar los espacios en blanco por un guión bajo.
  43. string reemplazar(string linea) {
  44.    //Nueva línea
  45.    string nLinea = "";
  46.  
  47.    //Sustituyendo cada espacio en blanco con un guión bajo.
  48.    for(unsigned int h = 0; h < linea.length(); h++) {
  49.        if(linea[h] == ' ') {
  50.            nLinea[h] += '_';
  51.        } else {
  52.            nLinea[h] += linea[h];
  53.        }
  54.    }
  55.  
  56.    return nLinea;
  57. }
  58.  


En línea

ivancea96


Desconectado Desconectado

Mensajes: 3.414


ASMático


Ver Perfil WWW
Re: [C++] Error con ficheros.
« Respuesta #1 en: 26 Noviembre 2016, 23:39 pm »

Código
  1. string reemplazar(string linea) {
  2.    //Nueva línea
  3.    string nLinea = "";
  4.  
  5.    //Sustituyendo cada espacio en blanco con un guión bajo.
  6.    for(unsigned int h = 0; h < linea.length(); h++) {
  7.        if(linea[h] == ' ') {
  8.            nLinea[h] += '_';
  9.        } else {
  10.            nLinea[h] += linea[h];
  11.        }
  12.    }
  13.  
  14.    return nLinea;
  15. }

Código
  1. nLinea[h] += '_';
Ahí no le estás agregando el caracter a la cadena. Ahí le estás sumando '_' (su valor ascii) al caracter en la posición h (inexistente, de ahí el error).
Querrías poner:
Código
  1. nLinea += '_';


En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines