您的位置:首页 > 编程语言 > C语言/C++

C++中利用vector来处理文本中保存的数据

2013-05-06 13:23 387 查看
最近在尝试利用C++做信号处理方面的仿真,于是就涉及到了大量数据的存储。由于在读取数据的时候,并不知道数据的长度,这时候,vector就很好用了,因为vector容器不用知道数组的长度。

首先利用matlab生成一个很简单的整型数组,或者直接复制都行。

代码(Matlab)

[plain] view
plaincopy

clear,clc;

a=[1 2 3 4 5 6 7 8 9];

fid=fopen('D:\\\workspa\\cpp\\fileIOTest\\dataIn.txt','wt');

fprintf(fid,'%g ',a);

fclose(fid);

生成的文本如下



之后,将文本中的数据读入到文件流中,之后代码如下:

[cpp] view
plaincopy

#include <iostream>

#include <fstream>

#include <string>

#include <iomanip>

#include <vector>

#include <stdlib.h>

using std::string;

using std::vector;

using namespace std;

//用来测试文件的读写操作,输入输出文件均为保存在程序根目录下的txt文件

int main()

{

ifstream infile; //infile是一个文件流,因此其实还是对流进行的操作

ofstream outfile;//outfile也是一个文件流,用来操作输出文件

infile.open("D:\\\workspace\\cpp\\fileIOTest\\dataIn.txt");

vector<int> data_vector; //用来保存文本中数据的向量

vector<int> out_vector; //用来保存输出结果的向量

vector<int> temp_vector; //缓存向量

int temp;

string message;

if(!infile) //判断是否存在ifstream infile

{

cout<<"读入文件不存在"<<endl;

}

if (infile.is_open()) //判断文件流是否处于打开状态

{

while (infile.good()&&!infile.eof())

{

infile>>temp;

data_vector.push_back(temp); //将数据读入到data_vector

}

}

infile.close();

for (vector<int>::size_type i=0;i!=(data_vector.size()-1);i++)

{

cout<<"第"<<i+1<<"项的值是:"<<data_vector[i]<<endl;

}

temp_vector=data_vector; //避免修改到了data_vector

cout<<"*************************************************************"<<endl;

cout<<"文件的写操作"<<endl;

//对文本中的数据进行操作

for (vector<int>::size_type i=0;i!=(temp_vector.size()-1);++i)

{

temp_vector[i]=temp_vector[i]*temp_vector[i]+1; //对文本中数据进行简单处理,即:y=x.^2+1

}

//计算结果传递给out_vector

out_vector=temp_vector;

for (vector<int>::size_type i=0;i!=(out_vector.size()-1);i++)

{

cout<<"第"<<i+1<<"项的值是:"<<out_vector[i]<<endl;

}

outfile.open("D:\\\workspace\\cpp\\fileIOTest\\dataOut.txt"); //打开输出文件

for (vector<int>::iterator iter=out_vector.begin();iter!=(out_vector.end()-1);++iter)

{

char tmp[5];

itoa(*iter,tmp,10); //将10进制的数转换成string类型

message.append(tmp);

message.append(" ");

}

outfile<<message;

outfile.close(); //关闭输出文件

}

最终的到的结果如下:





可以看出,输出文本中数据是输入文本中数据的x.^2+1,这样对于以后的数字信号处理仿真,比如FFT,比如自相关,会有很大的借鉴意义。

转自:/article/8490214.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐