c++较好程序:读取csv文件
来源:互联网 发布:联想蓝牙遥控软件 编辑:程序博客网 时间:2024/06/07 18:08
{
private:
ifstream input;
public:
trace_reader_t(string filename)
: input(filename.c_str())
{
}
/*
* Read and convert a line to a host_io_command
*
* Return true if success.
*
*/
bool read(host_io_command_t& command)
{
static uint32_t ln = 0;
typedef char_separator<char> CS;
CS delimeter(" ,\t");
string line;
if (!input.is_open())
{
INFO("trace reader error: the file was not open.");
return false;
}
bool ret = false;
while (std::getline(input, line))
{
tokenizer<CS> tok(line, delimeter);
vector<string> vec;
ln++;
vec.assign(tok.begin(), tok.end());
if (vec.size() < 3)
{
// discard this line
continue;
}
if (vec[0] == string("$read"))
{
command.type = IO_READ;
}
else if (vec[0] == string("$write"))
{
command.type = IO_WRITE;
}
else
{
// discard this line
continue;
}
command.id = ln;
command.lba = stoul(vec[1], 0, 0);
command.blk_number = stoul(vec[2], 0, 0);
ret = true;
break;
}
return ret;
}
~trace_reader_t()
{
input.close();
}
};
csv文件的内容是:
Version=2,,,,
Operation,Address,Size,StartTime,Duration
$read,10235,23,0,0
$read,12052,15,0,0
最终的结果是将 10235给command的lba,23改command的blk,而其中的id是记录这是第几条命令的。
host_io_command_t的结构是:
class host_io_command_t
{
public:
uint32_t id;
io_command_type type;
uint32_t lba; // logical block address
uint32_t blk_number; // how many blocks does this command operate?
// Assumes the block size is 4096 bytes.
// defines more fileds below
// 这个的结果是用户的信息回车,加上这些信息。
string& to_string(string& str)
{
str += "\n command: ";
switch (type)
{
case IO_READ: str += "IO Read"; break;
case IO_WRITE: str += "IO Write"; break;
case IO_TRIM: str += "IO Trim"; break;
case IO_FLUSH: str += "IO Flush"; break;
default: str += "<Unknown>"; break;
}
str += "\n id: " + std::to_string(id);
str += "\n lba: " + std::to_string(lba);
str += "\n len(in block): " + std::to_string(blk_number);
return str;
}
};
io_command_type 的结构是:
enum io_command_type
{
IO_READ,
IO_WRITE,
IO_TRIM,
IO_FLUSH
};
对外提供的接口函数,或者说是使用方法是:
host_io_command_t cmd;
file_reader_t trace("./input.csv");
trace.read(cmd)
到这里,就将input.csv文件中的一行数据读到cmd这个结构体里边去了。
while (trace.read(cmd))
可以将整个文件的内容读完。
这个读取文件的类用图形表示如下:
- c++较好程序:读取csv文件
- 读取csv文件(C#,C++)
- C语言读取CSV文件
- C语言读取csv文件
- C#:读取csv文件,保存为csv文件
- 如何读取csv文件
- CSV文件直接读取
- C#读取CSV文件
- java读取CSV文件
- ajax 读取 .csv 文件
- Java读取CSV文件
- Java 读取 CSV 文件
- 读取.csv文件数据
- csv文件读取
- 读取/输出 CSV文件
- java读取csv文件
- c#读取csv文件
- php读取csv文件
- 嵌入式学习--step4 STM32F4总线架构
- Android音视频测试之Android CTS Media API Test
- Activity 切换动画
- 搭建opencv for Android环境的亲身经历问题
- c#扩展方法的使用
- c++较好程序:读取csv文件
- Gilde学习之旅
- 客户端获取服务器数据中文乱码问题
- [leetcode] 376. Wiggle Subsequence
- 使用boost和stl分别实现超时功能
- Android平滑图片加载和缓存库 Glide 使用详解
- Mysql学习中遇到的一些问题
- 二叉树
- linux下部署项目一(安装JDK)