Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Hachiman

Problemas com abertura de arquivos pelo ifstream

Recommended Posts

Alguém me ajude, por favor! Não manjo quase nada de C++!

Preciso construir um analisador léxico e estou com problemas para abrir arquivos .txt para leitura em C++ utilizando o ifstream!

Eu consigo abrir o arquivo que desejo quando coloco o ifstream direto na main da seguinte forma:

 

int main(void){

 

int token;

char sToken[TOKEN_LENGTH];

 

//variável para indicar se os tokens são parte de comentário ou não

bool comentario = false;

 

int lineNumber = 1;

 

// Abrir o arquivo fonte em modo binario

ifstream sourceFile("programa.txt",ios::binary);

 

// Extrair os tokens até EOF

while ((token = getToken(sourceFile,sToken,lineNumber)) != EOF){

........

........

........

sourceFile.close();

 

cout << endl;

 

system("PAUSE");

 

return 0;

 

}

 

Utilizando o ifstream da forma como está destacado em vermelho consigo abrir e fechar o arquivo sem problemas, mas preciso fazer o analisador léxico utilizando um arquivo header com a struct abaixo:

 

struct CompilerState{

 

ifstream *sourceFile; // Source code file

 

int token; // Token numerical representation

 

char sToken[TOKEN_LENGTH+1];// The token

 

int lineCount; // Line counter

 

char lineNumber[LINE_NUMBER_LENGTH];// Program line number

 

int currentCommand; // Command just parsed

 

int errorCount; // Compiler error counter

 

};

 

//****************************************************************

 

int getToken(CompilerState&);

 

O meu problema na linha em vermelho na struct. O professor definiu um ponteiro (ifstream *sourceFile). Como eu faço para utilizar este ponteiro para abrir o arquivo na main utilizando os parâmetros do ifstream para abertura de arquivos, neste caso"("programa.txt",ios::binary)"?

Meu professor declarou o "ifstream *sourceFile;" na struct e não posso mais utilizá-lo declarado direto na main.

valeu!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ora, você usa ele normalmente, mas na hora de criar um objeto da struct você vai ter que fazer:seuCompilerState.sourceFile = new ifstream("arquivo.txt", ios::binary);aí é só usar as funçoes normais, do ifstream, só que ao invés de usar "." para chamar métodos do objeto sourceFile, você usa o operador "->".

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.