首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C++从文本文件中读取并分离成向量

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

Stack Overflow用户
提问于 2015-11-20 16:15:44
回答 2查看 1K关注 0票数 0

试图以格式从文本文件中读取:

代码语言:javascript
复制
Jamie 27 31
Tom 31 22
Rashid 22 19
Sarah 18 22
Ricardo 90 27

我想把它分成三个向量,<name><x><y>

代码语言:javascript
复制
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类型。

我正在考虑使用倍数,但我确信有一个更优雅的解决方案。在y中,只要我在names[0]中创建一个空的第一个位置,那么只要我在names[0]中创建一个空的第一个位置,那么只要我在names[0]中创建一个空的第一个位置,一个索引就会被三个索引完全除以。有人能帮我吗?

KR

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-11-20 16:20:33

不如:

代码语言:javascript
复制
...
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);
}

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

代码语言:javascript
复制
for(int i=0; i<names.length(); i++){
   cout << "index " << i << " names: "<< names[i] << ", x:" << x[i] << ", y:" << y[i] << "\n";
}
票数 1
EN

Stack Overflow用户

发布于 2015-11-20 16:30:28

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33831269

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档