【发布时间】:2016-12-05 18:50:22
【问题描述】:
我有一个文本文件,其中包含 0,..,2^32-1 范围内的无符号整数。 每行包含一个整数(和一个换行符)。
我想将它写入二进制文件以节省空间(这样每个 int 将占用 4 个字节)。最好的方法是什么?
我尝试了几个选项,但似乎都不起作用。我们将不胜感激。
当前(非工作)代码:
#include <fstream>
#include <iostream>
#include <stdio.h>
int main(){
int x;
while (std::cin >> x){
fwrite((void*)&x, sizeof(x), 1, stdout);
}
return 0;
}
它是使用以下方法编译的:
g++ compress.cc -o compress.
但是,它似乎只输出第一个整数。
例如,我是否运行了命令./compress < bla | wc -c
其中“bla”是一个包含
的文件1864754174
2150244390
1703231727
命令的结果是4,而不是我预期的12。
【问题讨论】:
-
你尝试了什么?现在,这个问题只是给我代码。这几乎会立即被否决并关闭。记得编辑你的问题,不要只在 cmets 部分回答这个问题。
-
好的,现在什么不起作用?请阅读如何创建MCVE
-
编辑,问题。你在这个网站上问了足够多的问题,知道如何问一个好问题。
-
代码看起来没问题(除了
return 1- 应该是return 0,事实上x应该是uint32_t,而不是int)。您需要提供更多详细信息,说明您是如何构建和运行它的,以及它如何没有按要求运行, -
虽然我个人会这样做:
std::cout.write((char*)&x, sizeof(x));.