I am having some trouble read and working with a data file. There are 3 categories that I will create from the data file. The first two categories are each based off data that is guaranteed not to be split up. The third category may be split up a variable number of times.
The code below is the process I am currently using. This gets the job done when each segment is just one part (ex. segment3 = "dog"), but I need the application to be able to handle a variable number of parts for segment3 (ex. segment3 = "Golden Retriever" or "Half Golden Half Pug"). segment1 and segment2 are guaranteed to be whole and not split between spaces. I understand why my code skips over any extra spaces (Instead of recording "Golden Retriever" it will only record "Golden". I don't know how to manipulate my code so that it understands that anything anything in the line after segment2 is a part of segment3.
______________________________
// This is the structure of the data file. It is a .txt
China 1987 Great Wall of China.
Jordan 1985 Petra.
Peru 1983 Machu Picchu.
// End of Data file. Code below.
________________________________
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
int main()
{
ifstream myFile("data.txt");
string segment1;
string segment2;
string segment3;
vector <string> myVec;
while(myFile >> segment1 >> segment2 >> segment3)
{
vector <string> myVec; //
myVec.push_back(segment1); myVec.push_back(segment2); myVec.push_back(segment3);
int Value = atoi(myVec[1].c_str()); // should print int value prints zero with getline
}
return 0;
}
I have searched stackoverflow and the internet, and found some ideas but nothing that seems to help address the issue while working with my code. The best idea that I have would involve scrapping my current approach to reading the file. 1. I could parse the data using getline and into a vector. 2. I could assign index 0 to segment1 and index 1 to segment2. 3. I could assign index 3 until the end of the vector to segment 3.
Galik's solution helped me resolve that, but now I have an issue attempting to type cast. [int altsegment2 = atoi(segment2.c_str());] always results in zero now
std::getline