Squadfury Posted May 23, 2015 Report Share Posted May 23, 2015 (edited) Ola pessoal.. Eu preciso de ajuda: Criei uma função que lê dados de um ficheiro e utiliza os dados para atribuir às diversas variáveis existentes e serve como alternativa ao insere dados na consola... A leitura dos dados é sequencial e o ficheiro so pode conter os dados a atribuir às variàveis: void lePlanos(Lista& empres){ string titulo, instituiçao, empresario,linha; double dconsumiveis, dconsultores, compraEquip, deslocaçoes; int duraçao; int codigo = 0; ifstream ficheiro; ficheiro.open("exemplo.txt"); if (ficheiro.is_open() && ficheiro.good()) { ficheiro.seekg(ios::beg); ficheiro.clear(); cout << endl << "A ler dados..." << endl; while ( ficheiro>>linha) { Lista * novo = new Lista(); getline(ficheiro, titulo); cout << titulo; novo->titulo = titulo; getline(ficheiro, instituiçao); cout << instituiçao; novo->instituicao = instituiçao; getline(ficheiro, empresario); cout << empresario; novo->empresario = empresario; ficheiro >> dconsumiveis; cout << dconsumiveis; novo->gastos.dconsumiveis = dconsumiveis; ficheiro >> dconsultores; cout << dconsultores; novo->gastos.dconsultores = dconsultores; ficheiro >> compraEquip; cout << compraEquip; novo->gastos.compraEquip = compraEquip; ficheiro >> deslocaçoes; cout << deslocaçoes; novo->gastos.deslocaçoes = deslocaçoes; codigo = codigo + 1; novo->codigo = codigo; novo->seguinte = empres.seguinte; empres.seguinte = novo; cout << "-- -" << endl; } infile.close(); } } Eu queria saber se há possibilidade do exemplo.txt ser do tipo titulo: vert Instituiçao: Anac Empresario; Pedro Gastos consumiveis: 550 Gastos Consultores: 1230 Compra de equipamento: 890 gastos com Deslocações: 230 em vez de: vert Anac Pedro 550 1230 890 230 Obrigado Edited May 23, 2015 by Squadfury Link to comment Share on other sites More sharing options...
HappyHippyHippo Posted May 23, 2015 Report Share Posted May 23, 2015 rstas a trabalhar num ambiente *unix (tipo linux) ? IRC : sim, é algo que ainda existe >> #p@p Portugol Plus Link to comment Share on other sites More sharing options...
Squadfury Posted May 23, 2015 Author Report Share Posted May 23, 2015 rstas a trabalhar num ambiente *unix (tipo linux) ? Não, é windows... Link to comment Share on other sites More sharing options...
HappyHippyHippo Posted May 24, 2015 Report Share Posted May 24, 2015 char buffer[256]; while(ficheiro.good()) { ficheiro.getline(buffer, 256) if (ficheiro.good()) { string line(buffer); string key = line.substr(0, line.find(':')); string value = line.substr(line.find(':') + 1); if (key == "batatas) { } else if (key == "cebolas") { } else if (key == "repolho") { } } } IRC : sim, é algo que ainda existe >> #p@p Portugol Plus Link to comment Share on other sites More sharing options...
Squadfury Posted May 24, 2015 Author Report Share Posted May 24, 2015 Obrigado... consegui fazer para a parte das strings, mas tenho algumas dúvidas em relação aos tipo Int e double, pelo menos não estou a conseguir... se pudesse dar uma dica sff seria otimo. cumprimentos Link to comment Share on other sites More sharing options...
HappyHippyHippo Posted May 24, 2015 Report Share Posted May 24, 2015 int n; std::string str = "32"; sscanf(str.c_str(), "%d", &n); printf("%d\m", n); nota: uma boa razão para saber C antes de C++ IRC : sim, é algo que ainda existe >> #p@p Portugol Plus Link to comment Share on other sites More sharing options...
Squadfury Posted May 24, 2015 Author Report Share Posted May 24, 2015 int n; std::string str = "32"; sscanf(str.c_str(), "%d", &n); printf("%d\m", n); nota: uma boa razão para saber C antes de C++ Esta parte está a escapar-me, após a leitura de dados do ficheiro eu vou ver os dados inseridos e na parte dos inteiros e doubles aparecem erros. Ele está a ler tudo. eu fiz assim: string linha; int dconsumiveis; ficheiro >> dconsumiveis; string key = linha.substr(0, linha.find(':')); string value = linha.substr(linha.find(':') + 1); sscanf(value.c_str(), "%d", &dconsumiveis); novo->gastoproj.dconsumiveis = dconsumiveis; Link to comment Share on other sites More sharing options...
HappyHippyHippo Posted May 25, 2015 Report Share Posted May 25, 2015 ... olha bem para o que acabaste de apresentar aqui ... após cada linha desse código coloca um comentário a dizer o que está a fazer IRC : sim, é algo que ainda existe >> #p@p Portugol Plus Link to comment Share on other sites More sharing options...
Squadfury Posted May 25, 2015 Author Report Share Posted May 25, 2015 Pois, deve ter havido alguma coisa que eu não entendi bem... string linha; int dconsumiveis; // variável que irá guardar o valor dos consumíveis ficheiro >> dconsumiveis; // a leitura que é feita nessa linha vai entrar na variavel dconsumiveis string key = linha.substr(0, linha.find(':')); // cria uma string que guarda o que é anterior a ":" string value = linha.substr(linha.find(':') + 1);// cria uma string que guarda o que é posterior a ":" sscanf(value.c_str(), "%d", &dconsumiveis); // recebe a informação presente em value e guarda em dcomsumiveis novo->gastoproj.dconsumiveis = dconsumiveis; Ja percebi que o sscanf não trabalha da maneira que eu descrevi, mas também não estou bem a ver como ele vai trabalhar neste caso... 😕 Link to comment Share on other sites More sharing options...
HappyHippyHippo Posted May 25, 2015 Report Share Posted May 25, 2015 por mais que olhe para a tua resposta não sei o que te responder ... desculpa ... IRC : sim, é algo que ainda existe >> #p@p Portugol Plus Link to comment Share on other sites More sharing options...
Squadfury Posted May 25, 2015 Author Report Share Posted May 25, 2015 por mais que olhe para a tua resposta não sei o que te responder ... desculpa ... Ok, não há problema,,, é estudar e procurar mais e chega-se lá. Agradeço muito a ajuda e a paciência... cumprimentos Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now