これは、SUBSTRと簡単です()をチェックし、発見する必要があります()。
#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;
}
と出力が
id1 Name1 25
id2 Name2 35
では、右の関連する質問を見てみましょう。文字列の部分がある場合は、構造体メンバへの通常の割り当ては簡単です。 – chris
[文字列を分割する最もエレガントな方法?](https://stackoverflow.com/questions/236129/most-elegant-way-to-split-a-string) – valleymanbs