C ++从文本文件中读取并分离为向量

时间:2015-11-20 16:15:44

标签: c++ file vector

尝试使用格式读取文本文件:

approval_prompt

我想将其分为三个向量,Jamie 27 31 Tom 31 22 Rashid 22 19 Sarah 18 22 Ricardo 90 27 <name><x>

<y>

然后对ifstream in ("data.txt"); vector<string> names; string name; if (!in) return; while (in >> name) names.push_back(name); x进行同样的操作,但使用y

目前,此代码会将所有单词读入vector<int>并将其视为字符串。我需要在namesx上做一些数学运算,所以我需要它们作为int类型。

我在考虑使用倍数,但我确信有更优雅的解决方案。正如在y中,只要读入ynames将始终具有可被3整除的索引,前提是我在names[0]中创建了一个空的第一个位置。有人可以帮帮我吗?

KR

2 个答案:

答案 0 :(得分:1)

怎么样:

...
vector <int> x;
vector <int> y;
...
...
int num_x, num_y;
while (in >> name >> num_x >> num_y){
   names.push_back(name);
   x.push_back(num_x);
   y.push_back(num_y);
}

有不同的方式。但是,例如,您可以访问这样的元素:

for(int i=0; i<names.length(); i++){
   cout << "index " << i << " names: "<< names[i] << ", x:" << x[i] << ", y:" << y[i] << "\n";
}

答案 1 :(得分:0)

我建议逐行将输入作为字符串(getline()istringstream()),解析输入(Split string with delimiters in C),然后将其推入向量中。如果您需要转换,请运行简单的转换功能,例如atoi()