Read tabs separated file into arrays in c++(在c ++中将制表符分隔的文件读入数组)
问题描述
我有这样的文件:
int1--tab--int2--tab--int3--tab--int4--tab--换行
int1--tab--int2--tab--int3--tab--int4--tab--newline
int1--tab--int2--tab--int3--tab--int4--tab--换行
int1--tab--int2--tab--int3--tab--int4--tab--newline
int1--tab--int2--tab--int3--tab--int4--tab--换行...
int1--tab--int2--tab--int3--tab--int4--tab--newline ...
我想将每一行保存到一个数组中.我的意思是所有 int1 都放入一个数组中,并想做同样的事情 int2 int3 ...
I want to save each row in to an array. I mean all int1 in to an array and want to do the same whit int2 int3 ...
我真的不知道该怎么做,请帮助我
I realy dont know how to do it please help me
我已经尝试逐行阅读了
#include <sstream>
#include <string>
std::string line;
while (std::getline(infile, line))
{
std::istringstream iss(line);
int a, b;
if (!(iss >> a >> b)) { break; }
}
推荐答案
您使用字符串流的想法是正确的.由于可能会再次使用读取分隔文件的代码,因此您可能会发现将其放入类中很有用.这是我个人的分隔 FileReader 类的摘录:
You had the right idea using a stringstream. Since code to read delimited files is likely to be used again, you may find it useful to put this into class. Here's an excerpt from my personal delimited FileReader class:
bool FileReader::getrow(RowMap &row){
std::string line = "";
if(std::getline(filehandle,line)){
std::stringstream line_ss(line);
std::string column = "";
unsigned int index = 0;
while(std::getline(line_ss,column,delimiter)){
if(index < headers.size()){
row[headers[index]] = column;
index++;
}
else{
break;
}
}
return true;
}
return false;
}
其中 RowMap 是以下的 typedef:
Where RowMap is a typedef of:
typedef std::unordered_map<std::string,std::string>
而 headers 是一个 typedef:
And headers is a typedef of:
typedef std::vector<std::string> RowHeadersVector;
并且应该有你的列名:
RowHeadersVector headers;
headers.push_back("column_1");
在我的示例中,我使用的是字符串到字符串的映射,但您可以轻松地将其更改为:
In my example, I'm using a map of string to string, but you could easily change it to:
typedef std::unordered_map<std::string,int>
使用这样的地图的好处是可以自行记录代码:
The benefit of using a map like this is self documented code:
row["column_1"]
这篇关于在c ++中将制表符分隔的文件读入数组的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:在c ++中将制表符分隔的文件读入数组
基础教程推荐
- 如何在 C++ 中处理或避免堆栈溢出 2022-01-01
- C++ 标准:取消引用 NULL 指针以获取引用? 2021-01-01
- 什么是T&&(双与号)在 C++11 中是什么意思? 2022-11-04
- 运算符重载的基本规则和习语是什么? 2022-10-31
- 如何定义双括号/双迭代器运算符,类似于向量的向量? 2022-01-01
- C++,'if' 表达式中的变量声明 2021-01-01
- 调用std::Package_TASK::Get_Future()时可能出现争用情况 2022-12-17
- 您如何将 CreateThread 用于属于类成员的函数? 2021-01-01
- C++ 程序在执行 std::string 分配时总是崩溃 2022-01-01
- 设计字符串本地化的最佳方法 2022-01-01