Advertisement
Shaun_B

C++ file read and write (plus search or something)

Jan 15th, 2016
745
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 5.87 KB | None | 0 0
  1. #include <iostream>
  2. #include <string>
  3. #include <math.h>
  4. #include <fstream>
  5. #include <conio.h>
  6.  
  7. /**
  8.  * This briefly demonstrates writing a file in C++
  9.  * using a console application. It will take in a line
  10.  * text and put that line in a file.
  11.  *
  12.  * Asks how many entries into a text file and asks for
  13.  * some details. There is also something to assign tasks
  14.  * to the 'entered' user. This was an example script for
  15.  * some Coventry University students who had an arbitrary
  16.  * set by some academic to show file handling.
  17.  *
  18.  * @Author:     Shaun B
  19.  * @Version:    1.0.2 - 2013-01-09
  20.  * @Todo:
  21.  *
  22.  **/
  23.  
  24. int main();
  25. int retrieve();
  26. void clearKeyboardBuffer();
  27. using namespace std;
  28.  
  29. /**
  30.  * Main entry of example
  31.  * @author Shaun B
  32.  * @version 0.0.1
  33.  */
  34. int main()
  35. {
  36.     string name         = "\0";
  37.     string dob          = "\0";
  38.     string age          = "\0";
  39.     int numberOfPeople  = 0;
  40.     int numberOfTasks   = 0;
  41.     int i               = 0;
  42.     string buffer       = "\0";
  43.     string myTextFile   = "\0";
  44.     ofstream myfile ("tester.txt");
  45.  
  46.     cout << "Record system v1.0." << endl;
  47.     cout << "How many records would you like to create?" << endl;
  48.     cin >> numberOfPeople;
  49.  
  50.     if (numberOfPeople>0)
  51.     {
  52.        for (i=0; i<numberOfPeople; i++)
  53.        {
  54.            //clearKeyboardBuffer();
  55.            cout << "Please enter the users name for record: " << i+1 << endl;
  56.            getline(cin, buffer);
  57.            myTextFile.append(buffer);
  58.            myTextFile.append("\n");
  59.            cout << "Please enter their date of birth (DD/MM/YY)" << endl;
  60.            getline(cin, buffer);
  61.            myTextFile.append(buffer);
  62.            myTextFile.append("\n");
  63.            cout << "What is your favourite colour?"<< endl;
  64.            getline(cin, buffer);
  65.            myTextFile.append(buffer);
  66.            myTextFile.append("\n");
  67.            cout << "What is your favourite sport?" << endl;
  68.            getline(cin, buffer);
  69.            myTextFile.append(buffer);
  70.            myTextFile.append("\n");
  71.            cout << "Please enter their age" << endl;
  72.            cin >> age;
  73.            myTextFile.append(age);
  74.            myTextFile.append("\n");
  75.            cout << "How many tasks would you like to set? (Zero for none)" << endl;
  76.            cin >> numberOfTasks;
  77.            if (numberOfTasks>0)
  78.            {
  79.                for (int x = 0; x < numberOfTasks; x++)
  80.                {
  81.                    clearKeyboardBuffer();
  82.                    cout << "Please enter task " << x+1 << endl;
  83.                    getline(cin, buffer);
  84.                    if(!buffer.empty())
  85.                    {
  86.                        myTextFile.append(buffer);
  87.                    }
  88.                    buffer.clear();
  89.                    cout << "Is task number " << x+1 << " a priority task (Y/N)" << endl;
  90.                    cin >> buffer;
  91.                    if(!buffer.substr(0,1).compare("Y") || !buffer.substr(0,1).compare("y"))
  92.                    {
  93.                        myTextFile.append(" !Important");
  94.                    }
  95.                    myTextFile.append("\n");
  96.                }
  97.            }
  98.            else
  99.            {
  100.                cout << "No tasks set for this person." << endl;
  101.            }
  102.            myTextFile.append("!END\n");
  103.        }
  104.     }
  105.     myTextFile.append("\0");
  106.     buffer.clear();
  107.     try
  108.     {
  109.         if(myTextFile.length()>=1)
  110.         {
  111.             cout << "Creating file: tester.txt" << endl;
  112.             myfile << myTextFile;
  113.         }
  114.         myfile.close();
  115.     }
  116.     catch (int e)
  117.     {
  118.         cout << "An exception has occurred in your programme." << endl;
  119.     }
  120.     retrieve();
  121.     return 0;
  122. }
  123.  
  124. /**
  125.  * Retrieves line from file
  126.  * @author Shaun B
  127.  * @version 0.0.1
  128.  */
  129. int retrieve ()
  130. {
  131.     string line         = "\0";
  132.     string text         = "\0";
  133.     string wholeFile    = "\0";
  134.     string searchInFile = "\0";
  135.     string answer       = "\0";
  136.     bool found          = false;
  137.     int counter         = 0;
  138.     int len             = 0;
  139.     clearKeyboardBuffer();
  140.     ifstream myfile ("tester.txt");
  141.     if (myfile.is_open())
  142.     {
  143.         while ( myfile.good() )
  144.         {
  145.             cout << "What user name do you want to search for?" << endl;
  146.             getline(cin, searchInFile);
  147.             len = searchInFile.length();
  148.             while (getline (myfile,line))
  149.             {
  150.                 text.append(line);
  151.                 int i = 0;
  152.                 while(i+len <= text.length())
  153.                 {
  154.                     if (!text.substr(i,i+len).compare(searchInFile))
  155.                     {
  156.                         cout << "User found! " << endl;
  157.                         found = true;
  158.                         cout << "Would you like to view the users details (Y/N)?" << endl;
  159.                         cin >> answer;
  160.                         if(!answer.substr(0,1).compare("Y") || !answer.substr(0,1).compare("y"))
  161.                         {
  162.                             cout << "Details:" << endl;
  163.                             while(text.compare("!END"))
  164.                             {
  165.                                 cout << text << endl;
  166.                                 text.clear();
  167.                                 getline(myfile,line);
  168.                                 text.append(line);
  169.                             }
  170.                         }
  171.                     }
  172.                     i++;
  173.                 }
  174.                 counter++;
  175.                 text.clear();
  176.             }
  177.         }
  178.         if (!found)
  179.         {
  180.             cout << "User was not found." << endl;
  181.         }
  182.     }
  183.     else
  184.     {
  185.         cout << "Unable to open file";
  186.         return -1;
  187.     }
  188.     myfile.close();
  189.     return 0;
  190. }
  191.  
  192. /**
  193.  * clears keyboard buffer
  194.  *
  195.  * @author Shaun B
  196.  * @version 0.0.2
  197.  * @fixed 15-01-2016
  198.  */
  199. void clearKeyboardBuffer()
  200. {
  201.     while (_kbhit())
  202.     {
  203.         _getche();
  204.     }
  205. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement