Thread: Using fstream to open a file that is created only during runtime

Threaded View

Previous Post Previous Post   Next Post Next Post
  1. #1
    Registered User
    Join Date
    Nov 2009
    Posts
    8

    Using fstream to open a file that is created only during runtime

    Hi,

    I'm using Visual C++ 6.0 and I'm trying to use fstream to open and read a file that is created only during runtime. This file is written by another function running on another thread, and my program will keep trying to "open" the file until it can be opened, i.e. after it's created, then read 3 numbers from it and execute the rest of its code.

    The file test.txt has the content

    Code:
    1
    3
    4
    My program that polls and opens the file is as follows:

    Code:
    ifstream fin;
    std::string tfile, snum1, snum2, snum3;
    long int num2, num3;
        
    tfile.assign(argv[1]);
    printf("Begin prog %s\n", tfile.c_str());
        
    fp: fin.open(donefile.c_str(), ifstream::in);
    if (fin.is_open())
    {
       printf("fin is open\n");
       getline(fin, snum1);
       getline(fin, snum2);
       getline(fin, snum3);
       num2 = atol(snum2.c_str());
       num3 = atol(snum3.c_str());
       printf("snum1 = %s\n", snum1.c_str());
       printf("num2 = %d num3 = %d\n", num2, num3);
       fin.close();
    }
    else
    {
       printf("Cannot open file %s\n", tfile.c_str());
       fin.close();
       Sleep(500);
       goto fp;
    }
        
    remove(tfile.c_str());
    printf("End of prog\n");
    I executed the program by

    Code:
    test_prog.exe "C:\test.txt"
    and waited about 3 seconds before putting the test.txt file into C:\

    My output was

    Code:
    Begin prog C:\test.txt
    Cannot open file C:\test.txt
    Cannot open file C:\test.txt
    Cannot open file C:\test.txt
    Cannot open file C:\test.txt
    Cannot open file C:\test.txt
    Cannot open file C:\test.txt
    fin is open
    snum1 = 
    num2 = 0 num3 = 0
    End of prog
    The test.txt file disappears after I refresh the C:\ folder.

    So the values for snum1, num2 and num3 are all wrong, as if the file was not read correctly.

    If I put a while fin.good() loop after printf("fin is open\n"); for that entire block (until printing the values of num2 and num3), then I get

    Code:
    Begin prog C:\test.txt
    Cannot open file C:\test.txt
    Cannot open file C:\test.txt
    Cannot open file C:\test.txt
    Cannot open file C:\test.txt
    Cannot open file C:\test.txt
    Cannot open file C:\test.txt
    fin is open
    End of prog
    How can I correctly read a file that is only created during runtime?

    Thank you.
    Last edited by hjazz; 11-20-2012 at 04:28 AM.

Popular pages Recent additions subscribe to a feed

Similar Threads

  1. fstream open method causing me a few headaches
    By Finchie_88 in forum C++ Programming
    Replies: 8
    Last Post: 10-18-2010, 06:44 PM
  2. fstream open parameters
    By Ancient Dragon in forum C++ Programming
    Replies: 5
    Last Post: 01-27-2006, 11:34 AM
  3. Help: Finding only Last modified file or Created file
    By lagrz in forum C++ Programming
    Replies: 3
    Last Post: 01-03-2006, 04:49 PM
  4. fstream lets you open a file for output twice (?!)
    By DonFiasco in forum C++ Programming
    Replies: 1
    Last Post: 06-09-2005, 07:41 PM
  5. Why won't fstream file open?
    By Brown Drake in forum C++ Programming
    Replies: 4
    Last Post: 11-20-2001, 11:30 AM