elcamone Posted November 15, 2009 at 02:38 PM Report Share #296302 Posted November 15, 2009 at 02:38 PM Boas, preciso de ler um ficheiro .txt e colocar o conteudo de cada linha num vector, o codigo que ate agora fiz foi: #include <iostream> #include <string> #include <fstream> using namespace std; void main(){ string frase[50]; int i=0; ifstream in("ficheiro_a_ler.txt"); if (!in) { cout << "Ficheiro nao encontrado!!"; } else { do { getline(in,frase [ i ]); cout << frase [ i ] << endl; i++; }while(in.get() != EOF); } cout << endl << endl << endl; for (int g=0; g <= i; g++) { cout << frase[g] << endl; } cout << endl; } Não sei porque mas (com a excepção da primeira linha) ele "come" o primeiro caracter de cada linha, por exemplo: o ficheiro "ficheiro_a_ler.txt" tem o seguinte conteudo: isto nao funciona, mas a ver vamos espero resolver, isto, hmmm bla bla bla, ggghhh ao executar o programa eu vejo: isto nao funciona, mas a ver vamos spero resolver, isto, hmmm la bla bla, ggghhh ou seja, ele "comeu" o "e" da 2ª linha e o "b" da 3ª linha, o: while(in.get() != EOF) esta a "comer" o 1º caracter de cada uma das linhas (não come da 1ª porque uso do/while). O que estou a fazer de mal? ? A minha 2ª duvida é: como se faz a separação de uma string em c++? Tentei o strtok(), mas so funciona para chars. Eu preciso de separar atraves das virgulas: Exemplo (em pseudo-codigo): ... Se (frase[0].split(",") == "isto nao funciona") { escrever << "ok"; } ... Agradeço desde ja as vossas ajudas. Fiquem bem Link to comment Share on other sites More sharing options...
kaskinho Posted November 15, 2009 at 04:54 PM Report Share #296329 Posted November 15, 2009 at 04:54 PM for ( i=0; i<50; i++) { cout << frase (i)<< endl; } cout << endl; } experimenta assim 🙂 [/i] Sandra Monteiro Link to comment Share on other sites More sharing options...
André Sousa Posted November 16, 2009 at 08:54 AM Report Share #296434 Posted November 16, 2009 at 08:54 AM Para fazeres a separação de strings entre vírgulas, podes utilizar a função find, cuja assinatura é: size_t find ( char c, size_t pos = 0 ) const; Portanto, envia à função o caracter que pretendes encontrar e a posicao inical(int inic = 0) onde começa a pesquisa. A função vai retornar-te a posição onde encontrou a virgula daí que recomendo a declaracao de uma variável inteira pos para guardar o valor. Para obter o seguinte conteúdo da linha, deve incrementar a variável pos, atribuir pos a inic e voltar a repetir o mesmo procedimento. 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