【发布时间】:2014-05-29 21:28:00
【问题描述】:
我有一个包含数千个用空格分隔的浮点数的文本文件。我试图使用内存映射将所有这些数据从文本文件复制到 Visual Studio 2010 中使用 c++ 的浮点数向量。以下是我为将文本文件读取到内存而编写的代码。代码只是读取随机数,这没有任何意义。谁能帮我修复它并将数据复制到浮点向量中
#include<boost\iostreams\device\mapped_file.hpp>
#include<iostream>
int main()
{
boost::iostreams::mapped_file_source file;
int numberofElements = 1000000;
int numberofBytes = numberofElements*sizeof(float);
file.open("ReplayTextFile.txt",numberofBytes);
if(file.is_open())
{
float* data = (float*)file.data();
for(int i = 0;i <numberofElements;i++)
std::cout<<data[i]<<", ";
file.close();
} else
{
std::cout<<std::cout<<" couldnt map the file"<<std::endl;
}
system("pause");
return 0;
}
【问题讨论】:
-
您不能仅仅将表示为文本(长度未知的十进制数字序列)的浮点数解释为以二进制(通常为 32 位)表示的浮点数。它与内存映射无关,是根本的区别。
-
请参阅此处了解将(内存映射)文件读入浮点向量的基准:stackoverflow.com/questions/17465061/…(甚至读入 3 个浮点值的结构)
标签: c++ visual-studio-2010 boost text