gpt4 book ai didi

c++ - C++ 中的错误,该怎么办?:找不到 ostream::write(long *, unsigned int) 的匹配项

转载 作者:行者123 更新时间:2023-11-30 18:32:58 26 4
gpt4 key购买 nike

我正在尝试使用 Turbo C++ 写入存储在二进制文件中的数据。但它显示了一个错误

could not find an match for ostream::write(long *, unsigned int)

我想将 4 字节数据写入该文件。当我尝试使用 char 指针写入数据时。它运行成功。但我想存储大值(value),例如2454545454只能存储在 long 中。

我不知道如何将 1 个字节转换为位。我有 1 个字节的数据作为一个字符。此外,我想做的是将 4 个字符转换为 long 并将数据存储到其中。另一方面,我想反转它,以便检索我写入了多少字节的数据。

long *lmem;
lmem=new long;
*lmem=Tsize;
fo.write(lmem,sizeof(long));// error occurs here
delete lmem;

我正在实现隐写术,并且已成功将 txt 文件存储到图像中,但现在尝试检索该文件数据。

编辑:

I am using Turbo Complier.

最佳答案

将其转换为 char*

long *lmem;
lmem=new long;
*lmem=Tsize;
fo.write(reinterpret_cast<char*>(lmem),sizeof(long));
delete lmem;

甚至更好(因为堆栈上的分配速度更快且不易出错)

long lmem = Tsize;
fo.write(reinterpret_cast<char*>(&lmem),sizeof(long));

如果Tsize是可寻址的并且很长,你可以这样做:

fo.write(reinterpret_cast<char*>(&Tsize),sizeof(long));

关于c++ - C++ 中的错误,该怎么办?:找不到 ostream::write(long *, unsigned int) 的匹配项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2492676/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com