【发布时间】:2018-04-09 22:17:04
【问题描述】:
首先,我想表达我在网上搜索了很多之后,没有找到合适的文章或解决方案来发布我的问题。
如标题所述,我需要将 ASCII 文件转换为二进制文件。
我的文件由行组成,每一行都包含用空格分隔的浮点数。
我发现很多人使用 c++,因为这种任务更容易。
我试过下面的代码,但是生成的文件太大了。
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int main(int argc, char const *argv[])
{
char buffer;
ifstream in("Points_in.txt");
ofstream out("binary_out.bin", ios::out|ios::binary);
float nums[9];
while (!in.eof())
{
in >> nums[0] >> nums[1] >> nums[2]>> nums[3] >> nums[4] >> nums[5]>> nums[6] >> nums[7] >> nums[8];
out.write(reinterpret_cast<const char*>(nums), 9*sizeof(float));
}
return 0;
}
我找到了这两个资源:
http://www.eecs.umich.edu/courses/eecs380/HANDOUTS/cppBinaryFileIO-2.html https://r3dux.org/2013/12/how-to-read-and-write-ascii-and-binary-files-in-c/
如果您还有其他资源,我不胜感激?
我的 ASCII 输入文件中的行如下:
-16.505 -50.3401 -194 -16.505 -50.8766 -193.5 -17.0415 -50.3401 -193.5
感谢您的宝贵时间
【问题讨论】:
-
你想到的格式是什么?二进制格式几乎意味着任何东西。
-
如果您的行包含三个
float,为什么要将它们读入int变量? -
请提供minimal reproducible example,包括输入文件、您预期的输出文件大小和实际输出文件大小。虽然我可以猜到你在这种情况下的问题是什么,但这应该包含在每个问题中。
-
那么你的代码有什么问题?
标签: c++