943,940 Members | Top Members by Rank

Ad:
  • C++ Discussion Thread
  • Unsolved
  • Views: 1642
  • C++ RSS
Oct 18th, 2007
0

Reading out to a file/Null String Troubles

Expand Post »
This is my first time working with outputting data to a file, so I've got some rough code that I need some pointers on.
cpp Syntax (Toggle Plain Text)
  1. else if (decision == "S" || decision == "s"){
  2. cout << "File name? " <<"("<<filename<<")"<< endl;
  3. cin >> newfile;
  4. if (newfile == '/0'){
  5. outdata.open("filename");
  6. for (k =0; k < rows; k++){
  7. for (m =0; m < cols; m++)
  8. outdata<< (image[k][m]);
  9. outdata<< "\n";
  10. outdata.close();
  11. }
  12. }
  13. return 0;
  14. // else {
  15. // outdata.open("newfile");
  16. // for (k =0; k < rows; k++){
  17. // for (m =0; m < cols; m++)
  18. // outdata<< (image[k][m]);
  19. // outdata<< "\n";
  20. // outdata.close();
  21. // }
  22. // }
  23. // return 0;
  24. }
If the person doesn't enter anything then it overwrites the file that was opened, and if the user enters something then it just pours the image into that filename. I'm not sure how to use null string, and also the outdata.open requires quotation marks around whatever is inside the parenthesis so I can't use the two strings filename and newfile. And I turned my else statement into a comment at the moment because the compiler doesn't like it so I'm trying to figure out what's wrong with that now.
Last edited by WaltP; Oct 18th, 2007 at 5:06 am. Reason: Added CODE tags -- you actually typed right over how to use them when you entered this post...
Similar Threads
Reputation Points: 10
Solved Threads: 0
Light Poster
DemonSpeeding is offline Offline
31 posts
since Oct 2007
Oct 18th, 2007
0

Re: Reading out to a file/Null String Troubles

Er, when you post code make sure to place it between 'code' blocks, like this:

[code]
std::cout << "Hello, world!" << std::endl;
[/code]

which looks like this:
C++ Syntax (Toggle Plain Text)
  1. std::cout << "Hello, world!" << std::endl;

I assume that filename is a std::string and outdata is a std::ostream. The stream classes are meant for parsing data, not pure string input. Instead, say:
C++ Syntax (Toggle Plain Text)
  1. std::getline( std::cin, filename );
  2. if (filename.empty()) filename = "newfile.txt";
  3.  
  4. outdata.open( filename.c_str() );
A very useful website is http://www.cppreference.com/

Hope this helps.
Featured Poster
Reputation Points: 1140
Solved Threads: 229
Postaholic
Duoas is offline Offline
2,039 posts
since Oct 2007
Oct 18th, 2007
0

Re: Reading out to a file/Null String Troubles

Thanks for the help, I am now able to save to a file if the user enters one, however it still doesn't work if the user doesn't enter a filename. If that happens, the program is to assume the user wants to overwrite the file that they originally opened.

C++ Syntax (Toggle Plain Text)
  1. else if (decision == "S" || decision == "s"){
  2. cout << "File name? " <<"("<<filename<<")"<< endl;
  3. cin >> newfile;
  4. if (newfile.empty()) {
  5. outdata.open(filename.c_str() );
  6. for (k =0; k < rows; k++){
  7. for (m =0; m < cols; m++)
  8. outdata<< (image[k][m]);
  9. outdata<< "\n";
  10. }
  11. outdata.close();
  12. }
  13. else {
  14. outdata.open(newfile.c_str() );
  15. for (k =0; k < rows; k++){
  16. for (m =0; m < cols; m++)
  17. outdata << (image[k][m]);
  18. outdata << "\n";
  19. }
  20. outdata.close();
  21. }
  22. return 0;
  23. }
Reputation Points: 10
Solved Threads: 0
Light Poster
DemonSpeeding is offline Offline
31 posts
since Oct 2007
Oct 18th, 2007
0

Re: Reading out to a file/Null String Troubles

It isn't working because you have not obeyed my advice. The user can hit enter a zillion times and it won't make any difference as long as you are using cin >> newfile;.

Also, notice how most of the lines you have written are exactly the same. Put all the stuff that writes to file by itself, once, after the file is opened using your if...else statement.
Featured Poster
Reputation Points: 1140
Solved Threads: 229
Postaholic
Duoas is offline Offline
2,039 posts
since Oct 2007

This thread is more than three months old

No one has posted to this discussion for at least three months. Please let old threads die and do not reply to them unless you feel you have something new and valuable to contribute that absolutely must be added to make the discussion complete. Otherwise, please start a new thread in this forum instead.
Message:
Previous Thread in C++ Forum Timeline: Newbie needs help....please!
Next Thread in C++ Forum Timeline: Non-recursive quicksort help





About Us | Contact Us | Advertise | Acceptable Use Policy
Forum Index | Build Custom RSS Feed


Follow us on Twitter


© 2011 DaniWeb® LLC