如何使用c ++中的write函数将float转换为char以在文件上写入?

时间:2017-03-18 11:28:32

标签: c++ file fstream

我需要使用写入函数而不是<<<<<<<运算符,但它崩溃了

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;
    }

1 个答案:

答案 0 :(得分:1)

问题可能就在这一行

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

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

我想你想要

f.put('#');