无法在文件中写入数据,程序C++中没有错误

Sir*_*eiz 4 c++ pointers file-handling

我不能在类中使用这些指针变量在文件上写数据.程序中没有错误,但文件上没有写入数据.请有人告诉我,我做错了什么.

#include <iostream.h>
#include <fstream.h>

class studentinfo
{
    private:/*Creating Private Data Members */
        char* VUID;
        char* campusID;
        char* Studentname;
        char* Fathername;

    public:
        void Storefile();/* Function to Store Data in the File*/
        char Display();/*Function to Read and then Display Data from the File*/
        studentinfo(char*, char*, char*, char*);/*Constructor to initialize Data Members*/
        ~studentinfo();
};

/* Constructor Defined Here*/
studentinfo::studentinfo(char* VUID, char* campusID, char* Studentname, char* Fathername)
{
    cout << "Parameterized Contructor is Called" << endl << endl;
}

/*Destructor Defined Here*/
studentinfo::~studentinfo()
{
    cout << "Destructor Called for destruction of the object" << endl;
    system("pause");
}

/*Function to Store Data in the File Defined here*/
void studentinfo::Storefile()
{
    ofstream re;
    re.open("record.txt");
    if(!re)/*Error Checking Mechanism*/
    {
        cout<<"Error Reading File"<<endl;
    }

    re << VUID << endl << campusID << endl << Studentname << endl << Fathername << endl;/*Using data members to Store data in the File*/
    cout << "All the Data Members are Stored in a File" << endl << endl;
    re.close();
}

/*Function to Read and then Display the data in the File is definde here */              
char studentinfo::Display()
{
    char output[100];/*Array to store and display the data*/
    ifstream reh;
    reh.open("record.txt");
    if(!reh)
    {
        cout << "Error Reading File" << endl;
    }

    cout << "Following is My Data" << endl << endl;
    while(!reh.eof()){
        reh.getline(output, 100, '\n');/*Reading the data and storing it in the 'output' array line by line*/
        cout << output << endl;
    }

    reh.close();
}


/*Main Function starting here*/                  
main()
{
    studentinfo s1("mc130202398", "PMTN08", "Rehan Shahzad Siddiqui","Rizwan Ali Siddiqui");/*Object Created and Initialized by constructor calling*/
    s1.Storefile();/*Function Call*/
    s1.Display();/*Function Call*/

    system("pause");
}
Run Code Online (Sandbox Code Playgroud)

Dav*_*rtz 6

您的构造函数已损坏,并且所有指针都未分配.在分配变量之前,不能使用变量的值.

另外,您使用的是什么糟糕的编译器或者您有什么警告设置?您的构造函数正在传递指向常量的指针,但它需要非常量指针.这肯定会引起警告,指出你对这些指针的错误处理.

  studentinfo s1("mc130202398", "PMTN08", "Rehan Shahzad Siddiqui","Rizwan Ali Siddiqui");/*Object Created and Initialized by constructor calling*/
Run Code Online (Sandbox Code Playgroud)

请注意,您将构造函数传递给一堆常量.

studentinfo::studentinfo(char* VUID, char* campusID, char* Studentname, char* Fathername)
Run Code Online (Sandbox Code Playgroud)

糟糕,但构造函数需要常规char*指针.那么这些指针应该指向什么?

提示:使用合理的C++类std::string,这些问题将会神奇地消失.