如何使用 C++ 中的写入函数将浮点转换为 char 以写入文件

how can i cast float to char to write on a file using write function in c++?

本文关键字:转换 文件 char 函数 C++ 何使用      更新时间:2023-10-16

我需要使用写入函数而不是运算符在文件上写入浮动价格<<但它崩溃了

int addDevice(fstream & f, Device & d)
    {
        char buffer[200];
        strcpy(buffer, d.id);
        strcat(buffer, "#");
        strcat(buffer, d.name);
        strcat(buffer, "#");
        short length = strlen(buffer) + sizeof(d.price);
        char c = '$';
            f.seekp(0, ios::end);
            f.write((char*) & c, 1);
            f.write((char*)&length, sizeof(length));
            f.write(buffer, length);
            f.write((char *) & d.price, sizeof(float));
            f.write((char *)'#', 1);
            f.seekp(0, ios::beg);
            return length;
    }

问题很可能是这条线

f.write((char *)'#', 1);

这会将'#'的数值(即 35(重新解释为内存地址,取消引用该地址,并将该地址处的字节写入f如果该地址有效,则不是。这是你得到未定义的行为和可能崩溃的地方(尽管你不能依赖它,这种事情总是崩溃(。

我想你想要

f.put('#');