如何使用 C++ 中的写入函数将 float 转换为 char 以写入文件?
how can i cast float to char to write on a file using write function in c++?
我需要使用写入函数而不是 << 运算符在文件上写入浮动价格,但它崩溃了
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('#');
我需要使用写入函数而不是 << 运算符在文件上写入浮动价格,但它崩溃了
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('#');