Search code examples
c++ifstream

C++ ifstream, issue loading with ";"


int a, b;
while (infile >> a >> b)
{
    // process pair (a,b)
}

So this is the code i've been watching but i ran into a problem because my strings doesn't have whitespaces between them, they have ";"
My code:

void load(string filename){ // [LOAD]
    string line;
    ifstream myfile(filename);
    string thename;
    string thenumber;

    if (myfile.is_open())
    {
        while (myfile >> thename >> thenumber)
        {
        cout << thename << thenumber << endl;

        //map_name.insert(make_pair(thename,thenumber));

        }
        myfile.close();
    }
   else cout << "Unable to open file";
}

[Inside the txt.file]

123;peter
789;oskar
456;jon

What i get right now is "thename" as 123;peter and "thenumber" as 789;oskar. I want "thename" as peter and "thenumber" as 123 so i can then insert it back into my map correctly, How?


Solution

  • It is fairly simple to read in a file in the format. You can use std::getline with a different delimiter to tell it where to stop reading the input.

    while(getline(myfile, thenumber, ';')) // reads until ';' or end of file
    {
        getline(myfile, thename); // reads until newline or end of file
        map_name.insert(make_pair(thename,thenumber));
    }