سؤال

ولدي برنامج يسمى رئيسية هي:

#include<iostream>
#include<fstream>
using namespace std;
#include"other.h"
int main()
{
//do stuff
}

وثم 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;
}

ووأحصل على خطأ:

<اقتباس فقرة>   

'seekg': المعرف لم يتم العثور

لماذا أحصل على هذا الخطأ وكيف يمكنني إصلاحه؟

هل كانت مفيدة؟

المحلول

وseekg هي طريقة من fstream (أعلن في istream) فئة.

وكنت لم مثيل وجدت.

ويأخذ هذا كمثال

  ifstream is;
  is.open ("test.txt", ios::binary );

  // get length of file:
  is.seekg (0, ios::end);

المصدر: http://www.cplusplus.com/reference/iostream/ istream / seekg /

وهكذا، يجب عليك

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;
}

وتأخذ بعين الاعتبار ما علق ParoXon في سؤالك.

ويجب إنشاء other.cpp ملف يحتوي على تنفيذ load_data الدالة. ملف other.h يجب أن يحتوي إعلان load_data الدالة. في هذا الملف (other.h) يجب أن تشمل جميع ملفات البيانات يجب للوظائف المعلن عنها للعمل. ولا تنسى لحماية نفسك ضد يتضمن متعددة!

وملف other.h

#ifndef __OTHER_H__
#define  __OTHER_H__

#include <iostream>
#include <fstream>

char* load_data(int,int);//no implementation
#endif

وother.cpp الملف

#include "other.h" //assumes other.h and other.cpp in same directory

char* load_data(int begin,int amount){
      //load_data implementation
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top