编辑:我尝试过,std::hexfloat
但它仍然无法使用gcc
,如本例所示.
1> user4581301..:
所述-0x1.e51b67p+0
狼吞虎咽-DE性国是的输出std::hexfloat
,一个除C++的标准库中的C++ 11标准的修订.
如果你更换
while(ifs >> std::hex >> a
>> std::hex >> b
>> std::hex >> c
>> std::hex >> d)
同
while(ifs >> std::hexfloat >> a
>> std::hexfloat >> b
>> std::hexfloat >> c
>> std::hexfloat >> d)
并且你的编译器支持C++ 11和hexfloat
(G ++有点滞后)你应该好好去.
编辑:G ++在包含std::hexfloat
在标题中是滞后的.不幸的是,截至今天,GCC 8.2,支持std::hexfloat
是不完整的,不起作用.这个答案对Asker不起作用.
编辑2:我应该为此摔倒我的剑,但幸运的是我没有剑.在我痴迷于解释为什么这在C++中不起作用并试图找到一种礼貌的方式使这个工作在C++中,我完全忘记了这在C中工作得很好的事实.
由于std::hexfloat
在C++标准的措辞被整理出来的时候被搁置,让我们按照Git-R完成!原理,使用C,并将其包装在一个函数中,以便以后可以很容易地用惯用的C++替换它.
#include
#include
int main()
{
float a, b, c, d;
FILE *f = fopen("data.txt", "r");
if (f == NULL)
{
std::cerr <<"Unable to open file."
return -1;
}
int n = 0;
while(fscanf(f, "%a %a %a %a", &a, &b, &c, &d) == 4)
{
std::cout <