& # 8220; Identifiant de recherche non trouvé & # 8221;
-
05-07-2019 - |
Question
J'ai un programme appelé main:
#include<iostream>
#include<fstream>
using namespace std;
#include"other.h"
int main()
{
//do stuff
}
puis autre.h:
char* load_data(int begin_point,int num_characters)
{
seekg(begin_point);
char* return_val=new char[num_characters+1];
mapdata.getline(return_val,num_characters);
return return_val;
}
et j'obtiens l'erreur:
'seekg': identifiant introuvable
pourquoi ai-je cette erreur et comment puis-je la corriger?
La solution
seekg est une méthode de la classe fstream (déclarée dans istream).
Vous n'en avez instancié aucun.
Prenez ceci comme exemple
ifstream is;
is.open ("test.txt", ios::binary );
// get length of file:
is.seekg (0, ios::end);
source: http://www.cplusplus.com/reference/iostream/ istream / seekg /
Alors, vous devriez
char* load_data(int begin_point,int num_characters)
{
ifstream is;
is("yourfile.txt") //file is now open for reading.
seekg(begin_point);
char* return_val=new char[num_characters+1];
mapdata.getline(return_val,num_characters);
return return_val;
}
Tenez compte des commentaires de ParoXon dans votre question.
Vous devriez créer un fichier other.cpp contenant l'implémentation load_data de la fonction. Le fichier other.h doit contenir la déclaration load_data de la fonction. Dans ce fichier (other.h), vous devez inclure tous les fichiers nécessaires pour les fonctions déclarées fonctionner. Et n'oubliez pas de vous protéger contre les inclus multiples!
Fichier other.h
#ifndef __OTHER_H__
#define __OTHER_H__
#include <iostream>
#include <fstream>
char* load_data(int,int);//no implementation
#endif
Fichier other.cpp
#include "other.h" //assumes other.h and other.cpp in same directory
char* load_data(int begin,int amount){
//load_data implementation
}