This is simple with substr() and find().
#include <iostream>
#include <vector>
#include <string>
using namespace std;
struct Person
{
string m_id;
string m_name;
int m_age;
};
int main()
{
vector<string> data;
vector<Person> people;
data.push_back("id1|Name1|25");
data.push_back("id2|Name2|35");
for(int i(0); i < data.size(); ++i){
size_t idx = data[i].find("|");
string id = data[i].substr( 0, idx);
string name = data[i].substr(idx+1, data[i].find_first_of("|", idx) + idx - 1);
string age = data[i].substr( data[i].find_last_of("|") + 1 );
Person p = {id, name, stoi(age)};
people.push_back(p);
}
for(int i(0); i < people.size(); ++i)
cout << people[i].m_id << " " << people[i].m_name << " " << people[i].m_age << endl;
return 0;
}
and the output is
id1 Name1 25
id2 Name2 35