尝试使用格式读取文本文件:
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>
并将其视为字符串。我需要在names
和x
上做一些数学运算,所以我需要它们作为int类型。
我在考虑使用倍数,但我确信有更优雅的解决方案。正如在y
中,只要读入y
,names
将始终具有可被3整除的索引,前提是我在names[0]
中创建了一个空的第一个位置。有人可以帮帮我吗?
KR
答案 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()