Leer archivo de texto con fecha y precios en C++

Tengo una tarea en C++ en que debo leer un listado de precios de un indice accionario. La información viene complicada para mi porque cada renglón consiste en una fecha y precio. Ejemplo 01/11/2004,105.48. Esto es una fecha y un float. No tengo problemas para construir el array leyendo la información del archivo de texto si es que solo fueran los precios, el problema es que: (1)no se como leer cada renglón para que me lea la fecha y el precio por separado, (2) No se como hacerlo con las fechas porque después debo ordenar por fecha. Intente con la clase String y separe exitosamente los datos, pero el problema ahora es que no se como volver de la clase string a float para el precio, ni como tratar la fecha.

2 respuestas

Respuesta
1
No se si esto te sirva, si no es así, házmelo saber
#include<fstream.h>
void main()
{
    char date[10];
    double price;
    ifstream read;
    read.open("filex.txt",ios::in);
    if(!read)
      cout<<"Can't read the file";
    while(read>>date)
    {
        read>>price;
        cout<<date<<" "<<price<<endl;
    }
    read.close();
}
Hola,
Muchas gracias. Es bastante más corto que mi código que es una vuelta gigante. El problema es que tu solución me lee mal el archivo.
Te reproduzco el resultado (antes del espacio lo que entiende como fecha, y después el precio):
01/02/2001,1108.48      1
/05/2004,1122.22      1
/06/2004,1123.67      1
Etc...
Como ves, no lee bien la fecha ni el precio... e intente cambiándole el largo del string, leyendo primero uno y después el otro, pero aun así no lo logro. HEEEELP
Generalmente en archivos de texto el separador de datos es el espacio
01/04/2008   115.2
08/02/2008   250.36
24/05/2008   125.5
Coloca en ese formato los datos de tu archivo sin la coma como separador y funcionara. Ahora si la coma com separador es un requisito te daré otra solución, ¿de acuerdo?
Lamentablemente si es requisito. Lo que hice hasta ahora, pero que son muchas lineas de código, es traerme todo el string, luego separarlo con strtok, luego convertir el string fecha en clase string y dejarlo como YYYYMMDD, y el string de date lo pase a float con strtof. Es largo, pero lo logre. Si hay algo más corto que eso lo agradecería. Por cierto, muchísimas gracias por las respuestas. Si no logras encontrar una solución más corta, quizás me podrías ayudar con alguna forma para contar la cantidad de lineas en el fichero de texto para flexibilizar el largo del array, así como el largo de cada string. Ahora los tengo fijos pero se que no esta bien hacerlo así.
Muchas gracias!
De nuevo creo que esto esta mejor, dime si necesitas algo más
#include<fstream.h>
#include<string.h>
#include<stdlib.h>
#include<alloc.h>
#include<io.h>
void main()
{
    char info[20],*data;
    float price;
    long nRegistros,nBytes;
    ifstream read;
    read.open("filex.txt",ios::in);
    if(!read)
      cout<<"Can't read the file";
    struct stRegistro//este registro es la estructura del archivo
    {
                char info[20];
    }reg;
    read.seekg(0, ios::end); // Colocar el cursor al final
    nBytes = read.tellg(); // Tamaño en bytes
    nRegistros = read.tellg()/sizeof(stRegistro); // Tamaño en registros
    cout<<"Numero de Registros"<<nRegistros+1<<endl;
    read.seekg(0,ios::beg);// Colocar el cursor al inicio
    while(read>>info)
    {
        data = strtok(info,",");
        price = atof(strtok(NULL,","));
        cout<<data<<" "<<price<<endl;
    }
    read.close();
}
Respuesta

Sonic has ensured that Happy Hour appeals to people looking for more than just a beverage. It becomes a way to enjoy comfort food at a fraction of the cost, creating value that goes far beyond the price tag. This smart combination of drinks plus snacks has helped Sonic Happy Hour stand out in a crowded fast-food market, proving that affordability and flavor can indeed go hand in hand. Sonic Happy Hour Prices: Breaking It Down When it comes to the actual numbers, Sonic Happy Hour prices are some of the most straightforward and rewarding in the fast-food industry. Most medium and large drinks or slushes that would normally cost around $2 to $3 are discounted by 50%, meaning you can often walk away with a refreshing beverage for just a little over $1.

Click Here

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas