„Seekg Kennung nicht gefunden“
-
05-07-2019 - |
Frage
Ich habe ein Programm namens Haupt:
#include<iostream>
#include<fstream>
using namespace std;
#include"other.h"
int main()
{
//do stuff
}
und dann other.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;
}
und ich erhalte die Fehlermeldung:
'seekg': Bezeichner nicht gefunden
Warum erhalte ich diesen Fehler und wie kann ich das Problem beheben?
Lösung
seekg ist eine Methode aus dem fstream (deklariert in istream) Klasse.
Sie haben keine nicht instanziiert.
Nehmen Sie dies als Beispiel
ifstream is;
is.open ("test.txt", ios::binary );
// get length of file:
is.seekg (0, ios::end);
Quelle: http://www.cplusplus.com/reference/iostream/ istream / seekg /
Also, sollten Sie
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;
}
Beachten Sie, was ParoXon in Ihrer Frage kommentiert.
Sie sollten eine Datei other.cpp enthält Funktion load_data Implementierung erstellen. Die Datei other.h sollte Funktion load_data Erklärung enthalten. In dieser Datei (other.h) sollten Sie alle Dateien enthalten für Funktionen neccesary erklärt, dort zu arbeiten. Und vergessen Sie nicht, sich selbst zu schützen gegen mehrere enthält!
Datei other.h
#ifndef __OTHER_H__
#define __OTHER_H__
#include <iostream>
#include <fstream>
char* load_data(int,int);//no implementation
#endif
Datei other.cpp
#include "other.h" //assumes other.h and other.cpp in same directory
char* load_data(int begin,int amount){
//load_data implementation
}