Print last entered date from .txt file

  • Thread starter tebes
  • Start date
  • Tags
    File
In summary: Please enter a song title: "; cin.get(ch); while (ch != '.')
  • #1
tebes
39
0

Homework Statement


How do I retreat the last entered data from .txt file ?
Code:
#include <iostream>
#include <fstream>
#include <string>
#include <cstdlib>
using namespace std; 
void menu(int *);
void option(fstream &, int *);
int main()
{
    int a, p; 
    while(a== 1||2||3||4||5 ) 
    {
    menu(&a);
    fstream myfile; 
    myfile.open("music.txt" , ios::app | ios::out);
    myfile.close();
    p=a;
    option(myfile, &p);
    }
    system("pause");
    return 0; 
}
void menu(int *e)
{
     cout<<"\n\nMusic index list \n"
         <<"---------------- \n"
         <<"1. Add new song title to index list file \n"
         <<"2. Print most recently added song title in index list file \n"
         <<"3. Print all the items from the index list file \n"
         <<"4. Delete all of the items on the index list file \n"
         <<"5. Quit \n\n";
     cin>>*e;
     cout<<endl<<endl;
}
void option(fstream &myfile, int *p)
{
     char ch; 
     string line; 
     int pass; 
     
     switch (*p)
     {
            case 1: 
                 {
                 myfile.open("music.txt", ios::app | ios::out);
                 cout<<"Please end the title with a period . \n";
                 cout<<"What is the new title ?\n ";
                 cin.get(ch);
                 while (ch != '.')
                 {
                       myfile.put(ch);
                       cin.get(ch);
                 }
                 myfile.put(ch);
                 myfile.close();
                 break; 
                 }
            case 2:
                 {
                 myfile.open("music.txt", ios::out);    //Need to print the last song title from the file
                 
                 myfile.close();
                 break; 
                 }
            case 3:
                 {
                 cout<<"My music: \n";
                 myfile.open("music.txt");
                 if (myfile.is_open())
                 {
                 while (myfile.good())
                 {
                 getline (myfile, line);
                 cout<<line<<endl;
                 } 
                 myfile.close();
                 }
                 else cout<<"Unable to open file.\n";
                 break; 
                 }
            case 4:
                 {
                 cout<<"Warning, confirm to delete.\n"
                     <<"Please press 1. \n";
                 cin>>pass; 
                 if(pass==1)
                 {
                 myfile.open("music.txt", ios::out);
                 cout<<"Data deleting...\n";
                 myfile.close();
                 }
                 else
                 cout<<"Try again.\n";
                 break; 
                 }
            case 5:
                 {
                 cout<<"warning, program to be closed.\n";
                  exit(0);
                  }
     }
}
 
Last edited by a moderator:
Physics news on Phys.org
  • #2
Are you asking how to retrieve the last-entered song title? If so, you could write a while loop that reads and saves in a variable a line of data at a time from the file (using ifstream::getline()). The loop should run until ios::eof() returns true. When ios::eof() returns true, you have reached the end of the file, and the variable holds the last string that was read.

Some comments on your code:
1) a, p, and e are really dumb names for variables. It's impossible to tell what they are supposed to represent. Use longer names that are more explanatory.
2) This code doesn't do what you think it's doing.
Code:
while(a== 1||2||3||4||5 ) 
{
   ...
}
The while loop will continue executing if a is any positive integer. You need to check the boolean expressions separately: (a == 1) || (a == 2) || etc.

3. Why are you opening the music.txt file so many times? I count five calls to myfile.open( ... ).

4. Your fourth menu item (delete the file) doesn't do anything useful. Maybe you just don't have that fully implemented yet.
 
  • #3
Mark44 said:
Are you asking how to retrieve the last-entered song title? If so, you could write a while loop that reads and saves in a variable a line of data at a time from the file (using ifstream::getline()). The loop should run until ios::eof() returns true. When ios::eof() returns true, you have reached the end of the file, and the variable holds the last string that was read.

Some comments on your code:
1) a, p, and e are really dumb names for variables. It's impossible to tell what they are supposed to represent. Use longer names that are more explanatory.


2) This code doesn't do what you think it's doing.
Code:
while(a== 1||2||3||4||5 ) 
{
   ...
}
The while loop will continue executing if a is any positive integer. You need to check the boolean expressions separately: (a == 1) || (a == 2) || etc.


3. Why are you opening the music.txt file so many times? I count five calls to myfile.open( ... ).


4. Your fourth menu item (delete the file) doesn't do anything useful. Maybe you just don't have that fully implemented yet.

Thank you for you suggestion. Those tips really helpful. I'm still a beginner.


Reply 1 : I agree with you. Those are really dumb variables. I apologize for giving trouble to you or whoever who read this codes.

Reply 2 : You are right. Thank you so much.

Reply 3 : The reason I open multiple of myfile.open(), is to put different access flag , to carry out their specific function.

Reply 4 : The fourth menu option is to clear the entered items on .txt .
 
  • #4
tebes said:
Reply 3 : The reason I open multiple of myfile.open(), is to put different access flag , to carry out their specific function.
I see that, but you still might be opening the file more than you need to. I don't think that you need to open the file in main() at all, since you are opening it several times in your option function.
tebes said:
Reply 4 : The fourth menu option is to clear the entered items on .txt .
But it says it is deleting the items in the file, but all it really does is close the file.
Code:
case 4:
{
    cout<<"Warning, confirm to delete.\n"
    <<"Please press 1. \n";
    cin>>pass; 
    if(pass==1)
   {
       myfile.open("music.txt", ios::out);
       cout<<"Data deleting...\n";
       myfile.close();
   }
   else
       cout<<"Try again.\n";
   break;
}
 
  • #5
Mark44 said:
I see that, but you still might be opening the file more than you need to. I don't think that you need to open the file in main() at all, since you are opening it several times in your option function.

But it says it is deleting the items in the file, but all it really does is close the file.
Code:
case 4:
{
    cout<<"Warning, confirm to delete.\n"
    <<"Please press 1. \n";
    cin>>pass; 
    if(pass==1)
   {
       myfile.open("music.txt", ios::out);
       cout<<"Data deleting...\n";
       myfile.close();
   }
   else
       cout<<"Try again.\n";
   break;
}

"I see that, but you still might be opening the file more than you need to. I don't think that you need to open the file in main() at all, since you are opening it several times in your option function."

Reply: I was requested to do that , by my professor. ^.^ I am sorry for ambiguousness . Thank you, by the way.

But it says it is deleting the items in the file, but all it really does is close the file.
Code:
case 4:
{
    cout<<"Warning, confirm to delete.\n"
    <<"Please press 1. \n";
    cin>>pass; 
    if(pass==1)
   {
       myfile.open("music.txt", ios::out);
       cout<<"Data deleting...\n";
       myfile.close();
   }
   else
       cout<<"Try again.\n";
   break;
}

Reply: I thought access flag " ios::eek:ut", was supposed to erase everything on the .txt when the program runs
 
  • #6
tebes said:
Reply: I thought access flag " ios::eek:ut", was supposed to erase everything on the .txt when the program runs
OK, I think you're right. If you open a file for output, that effectively wipes out the previous contents of the file.
 

1. How do I print the last entered date from a .txt file?

To print the last entered date from a .txt file, you will need to use a programming language such as Python, Java, or C++. You can open the .txt file and read the lines of text, then extract the date information and print it to the console or to another file.

2. Can I print the last entered date from a .txt file without using a programming language?

No, printing the last entered date from a .txt file requires some form of programming or scripting. You can use a basic text editor to manually search for the last date entered, but this may be time-consuming and prone to errors.

3. How do I ensure that the last entered date is accurate?

The accuracy of the last entered date depends on the accuracy of the data in the .txt file. It is important to regularly update and maintain the file to ensure that the dates are correct. Additionally, you can incorporate error handling and validation in your code to ensure that the date extracted is accurate.

4. Can I print the last entered date from a .txt file in a specific format?

Yes, you can format the last entered date to your desired format using string manipulation or specialized functions in your programming language. This allows you to display the date in a more readable and user-friendly way.

5. Is it possible to print the last entered date from a .txt file in real-time?

Yes, it is possible to continuously monitor a .txt file and print the last entered date in real-time using a programming language. You can use a loop to constantly check for updates in the file and print the last entered date whenever it changes.

Similar threads

  • Engineering and Comp Sci Homework Help
Replies
7
Views
1K
  • Engineering and Comp Sci Homework Help
Replies
14
Views
2K
  • Engineering and Comp Sci Homework Help
Replies
2
Views
3K
Replies
10
Views
958
  • Engineering and Comp Sci Homework Help
Replies
1
Views
1K
  • Engineering and Comp Sci Homework Help
Replies
9
Views
3K
  • Programming and Computer Science
Replies
33
Views
2K
  • Engineering and Comp Sci Homework Help
Replies
14
Views
4K
  • Programming and Computer Science
3
Replies
75
Views
4K
  • Engineering and Comp Sci Homework Help
Replies
2
Views
1K
Back
Top