Ir ao conteúdo
  • Cadastre-se

Ajuda em Arquivo


claude754

Posts recomendados

Como faço para salvar em um arquivo algo do system()

por exemplo system("date/t"); que seria a data de hoje.

Ja tentei de tudo... no final parei assim:

    vector<string>:: iterator it;    ifstream arq_entrada;    string texto;    arq_entrada.open("PASSAGENS.txt");    while(getline(arq_entrada, texto))    {        if(!arq_entrada)        {            cout<<"ERRO AO ABRIR O ARQUIVO!" <<endl;            system("pause");            break;        }        v.push_back(texto);    }    arq_entrada.close();    string valor = " - R$2,60 - ";    int date = system("date/t");    stringstream resultado;    resultado << date;    string t = resultado.str()+" "+ valor;    v.push_back(t);    ofstream arq_saida;    arq_saida.open("PASSAGENS.txt");    for(it = v.begin(); it != v.end() ; ++it)    {        arq_saida <<*it <<endl;    }    arq_saida.close();

porém não esta gravando a data no arquivo e sim um 0, eu tentei jogar o system em uma vareavel int e depois converter para string.

 

assim:

    int date = system("date/t");    stringstream resultado;    resultado << date;

e unir tudo assim:

string t = resultado.str()+" "+ valor;

e depois jogar no fim do vetor.

 

No inicio estou lendo tudo o que tem no arquivo e pondo em um vetor pois depois quando vou salvar o arquivo é sobscrevido e não posso perder o que ja ta salvo.

 

No final deve ficar cada linha assim:

 

18/06/2014 - QUARTA - R$2,60 - PELA MANHA.

 

O dia da semana e o turno eu ainda estou fazendo.

Link para o comentário
Compartilhar em outros sites

System executa comandos no sistema onde o programa está sendo executado, mas não retorna o resultado impresso pelo comando executado por ele, retorna o estado do comando executado (sucesso, erro, etc).

 

Pra obter data e hora a biblioteca a ser usada é a time.h (<ctime>), ou se estiver no Windows também é possível usar a biblioteca windows.h.

Link para o comentário
Compartilhar em outros sites

Acho que consegui mas agora tenho outra duvida... acabou ficando assim:

#include <iostream> //Entrada e Saída#include <stdlib.h> //Para usar atoi e system ...etc#include <vector> // vetor da stl#include <fstream> //para manipular arquivos#include <sstream> //Usado para conversão de vareavel para string#include <time.h> //para data e hora#include <iomanip> //Para usar setfill e setwusing namespace std;int menu(){    int nivel;    cout<< ("*-----------------------------*\n");    cout<< ("|           OPCOES            |\n");    cout<< ("*-----------------------------*\n");    cout<< ("|  1 - USEI                   |\n");    cout<< ("|  2 - VALOR TOTAL            |\n");    cout<< ("|  5 - SAIR DO PROGRAMA       |\n");    cout<< ("*-----------------------------*\n");    cout<< ("DIGITE A CONDICAO DESEJADA: \n");    cin >> (nivel);    cin.ignore();    system("cls");    return nivel;}struct Data{    char dia;    char mes;    char ano;};void ParseData(char str[9], Data *Alvo)//para converter o formato americano em pt-br{    // 0, 1 = mes    // 2    = /    // 3, 4 = dia    // 5    = /    // 6, 7 = ano    // 8    = NULO    char _dia[3] = {        str[3],        str[4],        0    };    char _mes[3] = {        str[0],        str[1],        0    };    char _ano[3] = {        str[6],        str[7],        0    };    Alvo->dia = atoi(_dia);    Alvo->mes = atoi(_mes);    Alvo->ano = atoi(_ano);    return;}string dia_semana(string n){    struct tm *DataAtual; //estrutura para trazer data e hora.    char semana = DataAtual->tm_wday;    switch(semana)    {        case 0:return n="SEGUNDA";        case 1:return n="TERÇA";        case 2:return n="QUARTA";        case 3:return n="QUINTA";        case 4:return n="SEXTA";        case 5:return n="SABADO";        case 6:return n="DOMINGO";    }}string dia_periodo(string n){    int horas;    time_t hora;    struct tm *HoraAtual;    //obtem a hora atual    hora = time(NULL);    HoraAtual = localtime(&hora);    //Joga a hora para uma vareavel int    HoraAtual->tm_hour = horas;    if(horas <= 12)        return n="PELA MANHA.";    else return n ="PELA TARDE.";}const string valor = " ; R$2,60 ";void nova(vector<string> v){    vector<string>:: iterator it;    ifstream arq_entrada;    string texto;    arq_entrada.open("PASSAGENS.txt");    while(getline(arq_entrada, texto))    {        if(!arq_entrada)        {            cout<<"ERRO AO ABRIR O ARQUIVO!" <<endl;            system("pause");            break;        }        v.push_back(texto);    }    arq_entrada.close();    char dateStr[9];// data em formato americano    _strdate( dateStr);//vareavel global    Data atual;    ParseData(dateStr, &atual);//passa a data em formato americano e a struct    int dia = atual.dia;    int mes = atual.mes;    int ano = atual.ano;    string periodo;    dia_periodo(periodo);//---Converte os inteiros em string---    stringstream dia_atual;    dia_atual << dia;    stringstream mes_atual;    mes_atual << mes;    stringstream ano_atual;    ano_atual << ano;//------------------------------------    string semana;    string t = dia_atual.str()+"/"+mes_atual.str()+"/"+ano_atual.str()+" - "+dia_semana(semana)+ valor +dia_periodo(periodo);    cout<<t <<endl;    v.push_back(t);    ofstream arq_saida;    arq_saida.open("PASSAGENS.txt");    for(it = v.begin(); it != v.end() ; ++it)    {        arq_saida <<*it <<endl;    }    arq_saida.close();}int main(){    system("title PROG PASSAGENS!");    vector<string> v;    do{        int opcao = menu();        switch(opcao)        {            case 1:            {                nova(v);                break;            }            case 2:            {                break;            }            case 5:            {                exit(0);            }        }    }while(true);}

Tive que fazer uma baita de uma volta para trazer a data em PT-BR pois estava vindo em formato americano, mas agora está vindo assim:

22/6/14

Quero que venha assim:

22/06/2014, mas como faço??? eu ja usei setfill mas foi algo assim:

cout << setfill('0')
         << setw(2) << dia << "/"
         << setw(2) << mes << "/"
         << setw(4) << ano;

 

porém no meu código eu estou juntando tudo em uma linha em string e mandando para um vector, ai não sei o que fazer... alguém tem alguma ideia??

Link para o comentário
Compartilhar em outros sites

da uma olhada na função

http://www.tutorialspoint.com/c_standard_library/c_function_strftime.htm

 

voce só teria que trocar o especificador pra informação que voce quer que seja armazenada no buffer,no caso ficaria

strftime(buffer,80,"%d / %m / :%Y", info);

 

tambem nao precisaria de um buffer com esse tamanho todo

espero que seja isso que perguntou

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...