Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
claude754

Ajuda em Arquivo

Recommended Posts

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.

Editado por claude754

Compartilhar este post


Link para o post
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.

Compartilhar este post


Link para o post
Compartilhar em outros sites
  • Autor do tópico
  • 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??

    Editado por claude754

    Compartilhar este post


    Link para o post
    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

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    Crie uma conta ou entre para comentar

    Você precisar ser um membro para fazer um comentário






    Sobre o Clube do Hardware

    No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações 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

    ×