C++读取csv文件
初学C++,尝试实现惯性导航+零速修正+卡尔曼滤波
第一步,读取csv中的传感器数据
此处用到C++文件的输入输出控制知识
首先定义声明一个ifstream对象,与文件名关联。ps:关联后相当于找到了文件的地址,可以通过此对象对文件操作
需要包含头文件#include <fstream>
ifstream _csvInput("csvdata/xxxx.csv")
或者
ifstream _csvInput;
_csvInput.open(csvdata/xxxx.csv)
然后就可以像cin一样操作_csvInput。例如
char ch;
_csvInput >> ch;
char buf[80];
_csvInput >> buf;
_csvInput.getline(buf, 80);
string line;
getline(_csvInput, line);
这里,我读的是传感器数据,csv文件每行,首个为number,其次是三个acc数据,三个gyro数据,三个mag数据
因此使用getline先读到一行数据
定义一行数据为字符串
string _Oneline;
读该文件一行数据
getline(_csvInput, _Oneline);
此时读到的数据存在_Oneline中,此行数据包括了上述四类数据(number,acc[3],gyro[3],mag[3])
此时再声明一个输入的串流对象,和刚刚的ifstream类似,由此可以对_Oneline进行操作
istringstream _Readstr(_Oneline);
再定义一行中,各个数据由_partOfstr表示
string _partOfstr;
读取由 ',' 隔开的各个数据 ,再转化为float型(一行有10个','分开的数据)
for(int i = 0; i < 10; i++)
{ getline(_Readstr, _partOfstr, ',');data[i] = atof(_partOfstr.c_str()); }
得到的data[]即是最后的结果。
最后程序
main.cpp
#include "global.h"
#include "ReadData.h"
#include "imu.h"using namespace std;int main()
{IMUdata imudata;//指定文件路径const char* path = "csvdata/straightLine_CalInertialAndMag.csv";//初始化CSVreader类对象CSVreader reader(path);//读数据,第一行为列名,不做处理reader.readline();while(!reader.readline()){//得到原始数据imudata = setIMU(reader.data);cout << imudata.acc[0] << endl;break;}//暂停等待用户信号,不然控制台程序会一闪而过system("pause");
}
ReadData.cpp
#include "ReadData.h"//构造函数,初始化文件路径
CSVreader::CSVreader(const char *path)
{_csvInput.open(path);
}
//读取csv文件数据
int CSVreader::readline()
{//定义一行数据为字符串string _Oneline;//读取一行数据getline(_csvInput, _Oneline);//cout << "原始字符串:" << _Oneline << endl;//如果读取到首行数据,返回失败if (_Oneline[0] == 'P')return EXIT_FAILURE;//定义字符串流对象istringstream _Readstr(_Oneline); //定义一行数据中的各个字串string _partOfstr;//将一行数据按','分割for(int i = 0; i < 10; i++){ getline(_Readstr, _partOfstr, ',');data[i] = atof(_partOfstr.c_str()); }//判断是否读完数据if ((data[0]||data[1]||data[3]) == 0)return EXIT_FAILURE;return EXIT_SUCCESS;
}
ReadData.h
#pragma once
#include <iostream>
#include <fstream>
#include <sstream>
#include <string>
#include <vector>#include "global.h"using namespace std;
//定义CSV读类
class CSVreader
{
public:CSVreader(const char *);int readline();float data[10];
private:ifstream _csvInput;
};
imu.cpp
#include "imu.h"
//将文件读到的数据传到IMUdata结构体
IMUdata setIMU(float data[])
{IMUdata imudata;for (int i = 0; i < 3; i++){imudata.acc[i] = data[i + 1];imudata.gyro[i] = data[i + 4];imudata.mag[i] = data[i + 7];}return imudata;
}
imu.h
#pragma oncestruct Time {int hour;int minute;int sec;int ms;
};struct IMUdata {float acc[3];float gyro[3];float mag[3];int number;
};IMUdata setIMU( float data[]);
C++读取csv文件相关推荐
- 【OpenCV】读取csv文件
csv简介 逗号分隔值(Comma-Separated Values,CSV,有时也称为字符分隔值,因为分隔字符也可以不是逗号),其文件以纯文本形式存储表格数据(数字和文本).纯文本意味着该文件是一个 ...
- 读取CSV文件内容,将其转换成JSON字符串输出
CsvToJsonUtil 工具类作用:读取CSV文件内容,将其转换成JSON字符串输出 转换工具类代码如下: package com.test.util;import java.io.*; impo ...
- 技术图文:C# VS. Python 读取CSV文件指南
背景 CSV 是一种以逗号进行特征分隔的文本文件类型,在数据库或电子表格中是一种非常常见的导入导出格式.本篇图文就以泰坦尼克号船员获救预测( Kaggle)中使用的数据集为例来说明 C#.Python ...
- python将二维列表内容写入和读取.csv文件
python将列表按行写入至.csv文件 # coding:utf-8 import csv list=[[1,2,3,4],[5,6,7,8],[89,55,66666,5],['张三','李四', ...
- R语言读取CSV文件
#读取CSV文件 data <- read.csv("drugbank.csv", header = FALSE)
- pandas读取csv文件的前几行数据(nrows参数)、pandas读取csv文件的中间几行数据(skiprows=range(a,b))
pandas读取csv文件的前几行数据(nrows参数).pandas读取csv文件的中间几行数据(skiprows=range(a,b)) 目录 pandas读取csv文件的前几行数据.pandas ...
- pandas读取csv文件发生编码(encoding)错误:获取文件编码格式之后再读取文件
pandas读取csv文件发生编码(encoding)错误:获取文件编码格式之后再读取文件 目录
- python读取csv文件并修改指定内容-pandas读取CSV文件时查看修改各列的数据类型格式...
下面给大家介绍下pandas读取CSV文件时查看修改各列的数据类型格式,具体内容如下所述: 我们在调bug的时候会经常查看.修改pandas列数据的数据类型,今天就总结一下: 1.查看: Numpy和 ...
- python读取csv文件的方法-CSV文件在Python中的几种处理方式
Comma Separated Values,简称CSV,它是一种以逗号分隔数值的文件类型.在数据库或电子表格中,它是最常见的导入导出格式,它以一种简单而明了的方式存储和共享数据,CSV文件通常以纯文 ...
- python批量读取csv文件-Python读取/批量读取文件
相信很多人的日常工作中,数据源除了来自数据库以外,其次就是外部文件,因此掌握读取文件的技能是相当必要的.在这里特此整理读取外部文件的方法,希望能有助你们快速解决问题.当然本文对读者的假设是有一定的py ...
最新文章
- KVM调整cpu和内存
- USB基础---设备、配置、接口、端点和字符串描述符
- 九江学院计算机主任黄冬久,陈春生副校长到实验中间调研引导工作
- 十个免费的WEB压力测试工具
- MTK 8127平台使用busybox
- 【Spark】Spark基本概念
- 两个前置摄像头_W21 5G性能篇 | 五摄像头组合,洞悉画面之美
- 第一节:Scrapy开源框架初探
- ifcfg-eth0配置详解
- 电阻电容串联、并联起来用在电路中,起什么作用?
- oracle数据文件recover,又遇BUG-ORA-01148:数据文件忽然变为recover状态
- linux ssh keygen r,SSH的ssh-keygen命令基本用法详解
- 如何编程阶梯形c语言,阶梯式C语言程序设计实验指导书.doc
- java怎么删除一行表格_Java 创建、删除Word表格
- 什么是嵌入式软件开发?
- iOS开发入门——基础篇一
- VuePress + GitHub Pages 生成静态网站
- 3GPP TS 23501-g51 中英文对照 | 5.2.3 Identification and authentication
- 人工神经网络的训练步骤,人工神经网络建模步骤
- python中plguba_Python量化交易进阶讲堂-爬虫抓取东方财富网股吧帖子
热门文章
- 无法解析服务器的dns地址
- QT编译出错解决 libQtCore.so: undefined reference to `QInotifyFileSystemWatcherEngine::create()'
- MCD12Q1数据处理教程——基于HEG、ArcGIS和ENVI
- 朱松纯团队新作:让AI「读懂」人类价值观!登上Science Robotics
- 浅谈:APP开发市场的发展轨迹与未来趋势
- 汉诺塔 问题 VIII
- 无人机飞控 ardupilot Copter-4.0.7 库示例
- 微信红包 php算法,基于PHP微信红包的算法探讨
- 解决QQ登录SDK不能网页授权登录的问题
- 计算机网络术语sonet,SONET