Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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!
Carregando comentários...