zl程序教程

您现在的位置是:首页 >  后端

当前栏目

C++ vector与数组转换写入/读出文件(十八)

C++转换文件数组 写入 vector 十八 读出
2023-09-14 09:09:58 时间

1.代码示例  

#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;
}