Cannot write data to file, no errors in C ++ program

I cannot write data to a file with these pointer variables in the class. There is no error in the program, but there is no data in the file. kindly someone will tell me 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"); } 
+4
source share
2 answers

Rewrite, which refers to several points:

Let me know if you have 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"); } 
+1
source

Your constructor is broken and leaves all pointers unassigned. You cannot use the value of a variable until you assign it.

Also, which crappy compiler do you use or what settings do you have? Pointers to constants are passed to your constructor, but it accepts non-constant pointers. This should have triggered a warning, indicating that these pointers were mishandled.

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

Note that you are passing a bunch of constants to the constructor.

 studentinfo::studentinfo(char* VUID, char* campusID, char* Studentname, char* Fathername) 

Oops, but the constructor accepts regular char* pointers. So what should these pointers indicate?

Tip. Use smart C ++ classes like std::string and these problems will magically disappear.

+6
source

Source: https://habr.com/ru/post/1488224/


All Articles