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

C++ read from text file and seperate into vectors

本文关键字:分离 向量 读取 文本 文件 C++      更新时间:2023-10-16

尝试从具有以下格式的文本文件中读取:

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);

然后对于xy也是如此,但vector<int>

.

就目前而言,此代码将所有单词读入names并将它们视为字符串。我需要对xy做一些数学运算,所以我需要它们作为 int 类型。

我正在考虑使用倍数,但我相信有一个更优雅的解决方案。例如,一旦读入namesy将始终有一个完全可以被三整除的索引,前提是我在names[0]中创建一个空的第一个位置。有人可以帮助我吗?

韩国克朗

怎么样:

...
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";
}

我建议将输入作为逐行(getline()istringstream()(的字符串,解析输入(在C中用分隔符拆分字符串(,然后将其推送到向量中。如果需要转换,请运行简单的转换函数,例如atoi()