C++ vector与数组转换写入/读出文件方式

目录
  • vector与数组转换写入/读出文件
  • vector BLF 文件读写
    • 1 BLF文件格式
    • 2 BLF文件写入流程
    • 3 注意事项

vector与数组转换写入/读出文件

#include <iostream>
#include <fstream>
#include <string.h>
#include <vector>
using namespace std;

template <class T> int compute_array_len(T &arr){
  int len = sizeof(arr)/sizeof(arr[0]);
  return len;
}

int main(){
  float f_arr[]={0.0353853,0.0463009,-0.00107202,-0.0329376,-0.0352677,-0.0548481,-0.0023105};
  int num = compute_array_len(f_arr);
  int len = sizeof(float) * num;

  vector<float> vec;
  {//1.把float数组插入到vector<float>
    for(int i = 0; i < num; i++)
      vec.push_back(f_arr[i]);
  }
  {//2.auto遍历
    cout <<"v: ";
    for(auto v : vec)
      cout << v << " ";
    cout << endl;
  }
  {//3.iterator迭代器遍历
    cout << "itr: ";
    for(vector<float>::iterator itr = vec.begin(); itr != vec.end(); itr++)
      cout << *itr << " ";
    cout << endl;
  }

  cout << "vec.size = " << vec.size() << endl;
  float da[vec.size()] = {0};
  {
    //4.把vector<float>遍历赋值给数组,然后写入文件
    for(int i = 0; i < vec.size(); i++){
      da[i] = vec[i];
      cout << "da["<< i << "] = " << da[i] << " ";
    }
    cout << endl;
  }

  float b[num];
  //1.write file
  ofstream ouF;
  ouF.open("test.txt", ios::binary);
  ouF.write((const char*)da, len);//写入文件
  ouF.close();

  //2.read file
  ifstream inF;
  inF.open("test.txt", ios::binary);
  inF.read((char *)b, len);
  inF.close();

  for(int i = 0; i < num; i++){
    cout<<"read file: " << b[i] << " ";
  }
  cout << endl;
  return 0;
}

vector BLF 文件读写

1 BLF文件格式

文件头部包含内容

TYPE 变量 说明
FileStatistics signature DWORD , 信号量
  statisticsSize DWORD , sizeof(FileStatistics)
  applicationId BYTE, applicat ion ID(usually CANoe)
  applicationMajor BYTE , application major number (usually 0)
  applicationMinor BYTE , application minor number (usually 0)
  applicationBuild BYTE , application build number (usually 0)
  apiMajor BYTE , BL API major number (e.g. 3)
  apiMinor BYTE , BL API minor number (e.g. 9)
  apiBuild BYTE , BL API major number (e.g. 6)
  apiPatch BYTE , BL API patch number (e.g. 3)
  fileSize ULONGLONG ,文件大小 以字节记
  uncompressedFileSize ULONGLONG ,解压缩文件大小
  objectCount DWORD ,number of objects
  objectsRead DWORD ,number of objects read
  measurementStartTime SYSTEMTIME ,测量开始时间
  lastObjectTime SYSTEMTIME ,最后一个对象的时间
  reserved[18] DWORD
LogContainer objectFlags DWORD,object flags (usually BL_OBJ_FLAG_TIME_ONE_NANS)
  reserved WORD
  objectVersion WORD, object specific version (usually 0)
  uncompressedFileSize ULONGLONG,解压文件大小
  compressedFileSize std::streamsize,压缩文件大小
  compressedFile char *,压缩文件内容 ,存储压缩后的can object

can message 内容

TYPE 变量 说明
ObjectHeaderBase signature DWORD , 目标信号
  headerSize WORD ,sizeof object header ,取决于header的类型
  headerVersion WORD ,object header 的类型(objectheader 有两种版本,以下只解释version 1)
  objectSize DWORD ,can object的大小
  objectType DWORD ,can object的类型
ObjectHeader objectFlags DWORD ,object 时间戳的单位 :10微妙或1ns
  reserved‘[’2] BYTE
  objectVersion WORD ,object specific version,必须设为0
  objectType DWORD ,can object的类型
  objectTimeStamp ULONGLONG,can object在 objectFlags给出单位上的时间戳
CanMessage channel WORD ,通道数
  flags BYTE , Bit 0: TX 、Bit 5: NERR、Bit 6: WU、 Bit 7: RTR
  dlc BYTE
  id DWORD
  data’['8] BYTE

2 BLF文件写入流程

3 注意事项

注意各帧报文timstamp与filestatistics上lastObjectTime参数的对应设置

blf文件中measurementStartTime 与lastObjectTime的时间间隔不宜过短 ,以小于1ms为例。

以上两种情况均容易产生在canoe解析时发生 Warning: The configured time interval is outside the logging file’s scope .

这些仅为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • C++中vector和数组之间的转换及其效率问题详解

    目录 数组转换为vector method1 method2 method3 vector转换为数组 method1 method2 method3 指针与数组 二维数组的声明 第一种方法的解释 总结 因为一些原因,本人遇到需要频繁把vector与数组之间转换的情况,于是就分析了一下两个之间转换的实施以及相关的效率问题. 数组转换为vector 众所周知,一维vector中的元素存储是顺序连续的,所以我们可以通过访问第一个元素的地址以及元素的数量来访问一系列的元素.因此,我们可以采取如下操作来对

  • Python打开文件,将list、numpy数组内容写入txt文件中的方法

    python保存numpy数据: numpy.savetxt("result.txt", numpy_data); 保存list数据: file=open('data.txt','w') file.write(str(list_data)); file.close() 以上这篇Python打开文件,将list.numpy数组内容写入txt文件中的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们.

  • php实现将数组或对象写入到文件的方法小结【三种方法】

    本文实例讲述了php实现将数组或对象写入到文件的方法.分享给大家供大家参考,具体如下: php将数组或对象原样写入或保存到文件有三种方法可以实现 第一种方法是使用serialize, 第二种方法是使用print_r, 第三种方法是使用var_export, 本文章向大家介绍这三种方法是如何将数组写入到文件的,需要的朋友可以参考一下. 第一:serialize方法 使用 serialize 将数组序列化,存储在文件中:调用时,再使用 unserialize 还原. <?php $file='./c

  • php将数组转换成csv格式文件输出的方法

    本文实例讲述了php将数组转换成csv格式文件输出的方法.分享给大家供大家参考.具体实现方法如下: <?php $sales = array( array('east','2005-01-01','2005-02-01',12.54), array('west','2005-01-01','2005-02-01',546.33), array('south','2005-01-01','2005-02-01',93.26), array('north','2005-01-01','2005-02

  • 使用ByteArrayOutputStream实现将数据写入本地文件

    目录 ByteArrayOutputStream将数据写入本地文件 那来了解一下ByteArrayOutPutStream吧 在表格输出时 FileOutputStream的写入方法 把读取的结果写入到ByteArrayOutputStream ByteArrayOutputStream将数据写入本地文件 在一个项目中做一次性校验部分,需要将校验后数据写入表格后上传.巧的是,服务器Down了.作为一个新手实习生菜鸟,为了测试自己的代码和输出结果有没有毛病,在大神同事的指点下选择了先将表格输出到本

  • python pandas写入excel文件的方法示例

    pandas读取.写入csv数据非常方便,但是有时希望通过excel画个简单的图表看一下数据质量.变化趋势并保存,这时候csv格式的数据就略显不便,因此尝试直接将数据写入excel文件. pandas可以写入一个或者工作簿,两种方法介绍如下: 1.如果是将整个DafaFrame写入excel,则调用to_excel()方法即可实现,示例代码如下: # output为要保存的Dataframe output.to_excel('保存路径 + 文件名.xlsx') 2.有多个数据需要写入多个exce

  • 浅谈python中对于json写入txt文件的编码问题

    最近一直在研究python+selenium+beautifulsoup的爬虫,但是存入数据库还有写入txt文件里面的时候一直都是unicode编码的格式. 接下来就是各种翻阅文档,查找谷歌和度娘,但是都没有具体的说明是什么问题. 结果根据自己的代码发现,原来是一句代码写到后面去了. name = json.dumps('中国你好', ensure_ascii=False) #重点就是这一句代码 date = time.strftime('%Y-%m-%d', time.localtime(ti

  • c++读取和写入TXT文件的整理方法

    如下所示: #include "stdafx.h" #include <iostream> //无论读写都要包含<fstream>头文件 #include <fstream> #include <iomanip> using namespace std; int main() { //ifstream从文件流向内存的ifstream表示文件输入流,意味着文件读操作 ifstream myfile("c://a.txt"

  • Python实现的读取/更改/写入xml文件操作示例

    本文实例讲述了Python实现的读取/更改/写入xml文件操作.分享给大家供大家参考,具体如下: 原始文档内容(test.xml): <?xml version="1.0" encoding="UTF-8"?> <framework> <processers> <processer name="AProcesser" file="lib64/A.so" path="/tmp&

  • 解决python将xml格式文件转换成txt文件的问题(xml.etree方法)

    概述 先来介绍一下xml格式的文件,从数据分析的角度去看xml格式的数据集,具有以下的优点开放性(能在任何平台上读取和处理数据,允许通过一些网络协议交换xml数据).简单性(纯文本,能在不同的系统之间交换数据).结构和内容分离(不同于HTML,数据的显示和数据本身是分开的).可扩展性(派生出其他标记语言) 问题描述 那么我们在进行数据分析的时候,如何运用xml里面的数据呢? 我们就需要将这类文件转化成其他类型的文件. (其实我认为说成提取xml的数据组成新的类型文件比较好一点) 就我个人的观点,

  • C++文件的数据写入和文件的数据读取的方法实现

    目录 一:没有数据,准备数据,写入文件 二:读文件操作 一:没有数据,准备数据,写入文件 1.main.cpp #include<iostream> using namespace std; #include<fstream> #include<string> #include<list> #include"CData.h" #include"CStaff.h" int main() { CData::userInit

随机推荐