无法在文件中写入数据,在程序C ++中没有错误 [英] Cannot write the data in the file, no error in the program C++

查看:102
本文介绍了无法在文件中写入数据,在程序C ++中没有错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I cannot write data on a file with these pointer variables in the class. there is no error in the program but no data is written on the file. kindly someone tell me that where i am doing something wrong.

#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");
}


推荐答案

的点数:

  • Removes the need to add using namespace std;
  • Uses std::string for the studentinfo member variables as per David Schwartz's recommendation
  • Uses a constructor initialisation list to set member variables
  • Replaces the unreliable eof() check

如有任何其他问题,请与我们联络。

Let me know if you have any further questions.

#include <iostream>
#include <fstream>
#include <string>

class studentinfo
{
    private:/*Creating Private Data Members */
        std::string m_VUID;
        std::string m_campusID;
        std::string m_Studentname;
        std::string m_Fathername;

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

/* Constructor Defined Here*/
studentinfo::studentinfo(std::string VUID, std::string campusID, std::string Studentname, std::string Fathername)
: m_VUID(VUID)
, m_campusID(campusID)
, m_Studentname(Studentname)
, m_Fathername(Fathername)
{
    std::cout << "Parameterized Contructor is Called" << std::endl << std::endl;
}

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

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

    // Using data members to store data in the file
    re << m_VUID.c_str() << std::endl; 
    re << m_campusID.c_str() << std::endl; 
    re << m_Studentname.c_str() << std::endl;
    re << m_Fathername.c_str() << std::endl; 

    std::cout << "All the data members are stored in a file" << std::endl << std::endl;
    re.close();
}

/* Function to read and then display the data in the file is defined here */
void studentinfo::Display()
{
    std::string in;/*Array to store and display the data*/
    std::ifstream reh("record.txt");
    if(!reh)
    {
        std::cout << "Error Reading File" << std::endl;
    }

    std::cout << "Following is My Data" << std::endl << std::endl;
    while(std::getline(reh, in))
    {
        std::cout << in << std::endl;
    }

    reh.close();
}


/* Main Function starts here*/
void main()
{
    // Object created and initialised by calling constructor
    studentinfo s1("mc130202398", "PMTN08", "Rehan Shahzad Siddiqui","Rizwan Ali Siddiqui"); 

    s1.Storefile(); /*Function Call*/
    s1.Display(); /*Function Call*/

    system("pause");
}

这篇关于无法在文件中写入数据,在程序C ++中没有错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆