试图以格式从文本文件中读取:
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和y上做一些数学,所以我需要它们作为int类型。
我正在考虑使用倍数,但我确信有一个更优雅的解决方案。在y中,只要我在names[0]中创建一个空的第一个位置,那么只要我在names[0]中创建一个空的第一个位置,那么只要我在names[0]中创建一个空的第一个位置,一个索引就会被三个索引完全除以。有人能帮我吗?
KR
发布于 2015-11-20 16:20:33
不如:
...
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";
}发布于 2015-11-20 16:30:28
我建议将输入逐行地作为字符串(getline()和istringstream()),解析输入( Split string with delimiters in C ),然后将其推到向量中。如果需要转换,运行一个简单的转换函数,如atoi()
https://stackoverflow.com/questions/33831269
复制相似问题