I am trying to do some file reading with C++ in Ubuntu 16.04 (GCC&G++ 5.4 and CMake 3.5.1). The test file (named 123.txt) have only a line words just like this:
Reprojection error: avg = 0.110258   max = 0.491361
I just want to get the avg error and max error. My method is to get a line and put them into a std::string 
 and use string::find. My codes are very easy just like this:
#include <iostream>
#include <string>
#include <stdio.h>
using namespace std;
int main()
{
    FILE *fp = fopen("123.txt", "r");
    char tmp[60];
    string str;
    fgets(tmp, size_t(tmp), fp);
    fclose(fp);
    cout << tmp << endl;
    str = tmp;
    cout << str.size() << endl;
    size_t avg = str.find("avg");
    size_t max = str.find("max");
    cout << avg << endl;
    cout << max << endl;
}
I can use g++ to compile it successfully. But I meet a strange issue.
When I first run it in the command, it will get the right result:
Reprojection error: avg = 0.110258   max = 0.491361
52
20
37
If I run codes again, it will go wrong sometimes just like this:
p
2
18446744073709551615
18446744073709551615
The "p" is a disorderly code which can not be shown correctly in the command. I am not good at C++ and feel confused about it. Is there someone who can say something? Thank you!
 
    