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

 

 


Tema destacado: Sigue las noticias más importantes de seguridad informática en el Twitter! de elhacker.NET


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Estructura y archivos en c++
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Estructura y archivos en c++  (Leído 3,479 veces)
Luifs

Desconectado Desconectado

Mensajes: 8


Ver Perfil
Estructura y archivos en c++
« en: 7 Junio 2013, 17:03 pm »

Buenas tardes disculpen tengo una duda.. necesito saber como hacer para que yo pueda extraer una cadena de texto y designarla a varias variables de una estructura en c++ ejemplo:

Nombres10402515
en la cual pudiera sacar las 3 variables un char y dos int.
Nombre    1040    2515



En línea

Puntoinfinito


Desconectado Desconectado

Mensajes: 919


#! /win/archlinux


Ver Perfil WWW
Re: Estructura y archivos en c++
« Respuesta #1 en: 7 Junio 2013, 17:21 pm »

Bueno pues facil, miras y analizas cadena de texto y seguidamente haces la conversión si hace falta, para luego guardarlo en una variable. Por ejemplo:

Código
  1. #include <iostream>
  2.  
  3. int integer1, integer2; // Creas variables
  4. char caracter1[128];
  5.  
  6. int main() {
  7.    string msg = "Nombres10402515"; // Pones la cadena a analizar
  8.    int size = msg.size(); // Miras el total de caracteres de msg
  9.    for (int i = 0; i < size; i++) /* Entramos en bucle para analizar letra por letra */ {
  10.        if (msg[i] == "0-9") { integer1 = atoi(msg[i]); }
  11.        } else if (msg[i] == "A-Z") { /* Lo mismo pero pasarlo a char */ }
  12.    // ETC...
  13.    }
  14. }

Esto es un ejemplo sin acabar, solo para que te ayude a pensar, lo que queda es hacer que cada vez que se añada un valor a una variable, se añada al final su contenido y que no se le sobrescriba. Y luego, si quieres que se dividan los integers en 2 variables, haz otra comparación para ver si esta llena y así entonces rellenar la siguiente. (Con size sería fácil).  Saludos  :D


En línea

AHORA EN SOFTONIC || CLICK HERE!!
Base64: QWNhYmFzIGRlIHBlcmRlciAxIG1pbnV0byBkZSB0dSB2aWRhLiBPbOkh



HACK AND 1337 : http://hackandleet.blogspot.com
WEBSITE: http://www.infiniterware.
Luifs

Desconectado Desconectado

Mensajes: 8


Ver Perfil
Re: Estructura y archivos en c++
« Respuesta #2 en: 7 Junio 2013, 17:37 pm »

Muchas gracias.. pero sera lo mismo a la hora de jalar la cadena de texto desde un archivo.txt?
En línea

Puntoinfinito


Desconectado Desconectado

Mensajes: 919


#! /win/archlinux


Ver Perfil WWW
Re: Estructura y archivos en c++
« Respuesta #3 en: 7 Junio 2013, 17:59 pm »

Claro, pero debes primero cojerla xD Con fstream puedes.

Esta sería una opción, no muy utilizada pero esta más o menos así en el ejemplo de ifstream en la página oficial de C++.
Código
  1. ifstream archivo_texto;
  2. archivo_texto.open("/directorio/archivo.txt",std::ifstream::in);
  3. char c = ifs.get();
  4. while (ifs.good()) {
  5.    cout << c; /* Con esto vas imprimiendo el contenido del texto, puedes hacer que se vaya almacenando y así hará lo que quieres */
  6.    c = ifs.get();
  7. }

otra opción mejor:

Código
  1. #include <fstream.h>
  2.  
  3. int main()
  4. {
  5.    ifstream archivo("Pruebas.txt", ios::noreplace);
  6.    char linea[128];
  7.  
  8.    if(archivo.fail())
  9.    cerr << "Error al abrir el archivo Pruebas.txt" << endl;
  10.    else
  11.    while(!archivo.eof())
  12.    {
  13.        archivo.getline(linea, sizeof(linea));
  14.        cout << linea << endl;
  15.    }
  16.    archivo.close();
  17.    return 0;
  18. }

Si no entiendes algo, here I am  :D Saludos!!
En línea

AHORA EN SOFTONIC || CLICK HERE!!
Base64: QWNhYmFzIGRlIHBlcmRlciAxIG1pbnV0byBkZSB0dSB2aWRhLiBPbOkh



HACK AND 1337 : http://hackandleet.blogspot.com
WEBSITE: http://www.infiniterware.
rir3760


Desconectado Desconectado

Mensajes: 1.639


Ver Perfil
Re: Estructura y archivos en c++
« Respuesta #4 en: 7 Junio 2013, 18:37 pm »

Cuando se procesa el contenido de un archivo no se recomienda el uso de las funciones feof (en el caso de C) y eof (C++) ya que estas retornan verdadero solo después del fallo en una operación de lectura.

En su lugar lo usual es utilizar el valor de retorno de la función, por ejemplo el bucle en el programa de Puntoinfinito se puede reducir a:
Código
  1. while (archivo.getline(linea, sizeof(linea)))
  2.   cout << linea << endl;

Un saludo
En línea

C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language
amchacon


Desconectado Desconectado

Mensajes: 1.211



Ver Perfil
Re: Estructura y archivos en c++
« Respuesta #5 en: 7 Junio 2013, 18:51 pm »

if(archivo.fail())
    cerr << "Error al abrir el archivo Pruebas.txt" << endl;
fail() indica errores en la operación de lectura, no te sirve para comprobar aperturas.

Yo uso:

Código
  1. if (!archivo.is_open
  2. ())
  3.  
  4. cerr<<"no se encontro el archivo";

O bien:

Código
  1. if (!archivo)
  2. cerr<<"No se encontro el archivo";
En línea

Por favor, no me manden MP con dudas. Usen el foro, gracias.

¡Visita mi programa estrella!

Rar File Missing: Esteganografía en un Rar
Puntoinfinito


Desconectado Desconectado

Mensajes: 919


#! /win/archlinux


Ver Perfil WWW
Re: Estructura y archivos en c++
« Respuesta #6 en: 7 Junio 2013, 21:45 pm »

Cierto, gracias, junto a lo que dijeron los dos compañeros quedaría así:

Código
  1. if(archivo.is_open())
  2.   cerr << "Error al abrir el archivo Pruebas.txt" << endl;
  3.   else
  4.   while(archivo.getline(linea, sizeof(linea)))
  5.   {
  6.       cout << linea << endl;
  7.       // Aqui puede poner que la variable linea se añada a alguna char
  8.   }
  9.   archivo.close();
  10.  

Lo del fail() fue un error mío de no fijarme en el código, perdón jajaja. Luifs, ahora si añades eso y a la vez que vayas mirando la variable linea que has extraído ya lo tienes.  :D Saludos!!
En línea

AHORA EN SOFTONIC || CLICK HERE!!
Base64: QWNhYmFzIGRlIHBlcmRlciAxIG1pbnV0byBkZSB0dSB2aWRhLiBPbOkh



HACK AND 1337 : http://hackandleet.blogspot.com
WEBSITE: http://www.infiniterware.
0xDani


Desconectado Desconectado

Mensajes: 1.077



Ver Perfil
Re: Estructura y archivos en c++
« Respuesta #7 en: 7 Junio 2013, 22:20 pm »

Código
  1. if (msg[i] == "0-9") { integer1 = atoi(msg[i]); }

Fíjate en esa comparación, estás comparando un caracter con una cadena, eso no debería compilar, ni determinar si el carácter representa un número.

Por otra parte el hecho de que @rir3760 no lo haya indicado me hace dudar... xD

Saludos.
En línea

I keep searching for something that I never seem to find, but maybe I won't, because I left it all behind!

I code for $$$
Hago trabajos en C/C++
Contactar por PM
Puntoinfinito


Desconectado Desconectado

Mensajes: 919


#! /win/archlinux


Ver Perfil WWW
Re: Estructura y archivos en c++
« Respuesta #8 en: 7 Junio 2013, 22:43 pm »

A lo que me refiero con "0-9", es que debe mirar si el carácter coincide con algún número del 0 al 9. No se si con números lo de hacer "0-9" funciona, pero en todo caso puede poner un if ( .. || ...) y sloved
En línea

AHORA EN SOFTONIC || CLICK HERE!!
Base64: QWNhYmFzIGRlIHBlcmRlciAxIG1pbnV0byBkZSB0dSB2aWRhLiBPbOkh



HACK AND 1337 : http://hackandleet.blogspot.com
WEBSITE: http://www.infiniterware.
rir3760


Desconectado Desconectado

Mensajes: 1.639


Ver Perfil
Re: Estructura y archivos en c++
« Respuesta #9 en: 8 Junio 2013, 02:45 am »

A lo que me refiero con "0-9", es que debe mirar si el carácter coincide con algún número del 0 al 9. No se si con números lo de hacer "0-9" funciona
No, no funciona.

Si la idea es verificar si un carácter es un dígito se puede utilizar un operador lógico, por ejemplo:
Código
  1. if (msg[i] >= '0' && msg[i] <= '9'){
  2.   // Es un digito
  3. }

O bien la función (usualmente implementada como macro) isdigit (prototipo en <ctype.h> en C y <cctype> en C++):
Código
  1. if (isdigit(msg[i])){
  2.   // Es un digito
  3. }

Un saludo
En línea

C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Estructura de archivos y directorios XP
Windows
josepeet_4 2 3,442 Último mensaje 2 Diciembre 2011, 17:02 pm
por josepeet_4
Creación de archivos y estructura de carpetas a partir de una existene
Scripting
nicktdigo 1 2,971 Último mensaje 11 Junio 2012, 01:48 am
por Eleкtro
Reparar una estructura de archivos.
Windows
A2902 3 2,600 Último mensaje 22 Septiembre 2013, 01:46 am
por ccrunch
estructura y archivos
Programación C/C++
TheZeck 1 1,649 Último mensaje 18 Noviembre 2016, 01:05 am
por 4dr14n31t0r
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines