Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++中的错误,该怎么办?:找不到OrSoo::写(long *,un签署int) 我试图用Turbo C++编写存储在二进制文件中的数据。但它显示了一个错误 could not find an match for ostream::write(long *, unsigned int)_C++_C_Steganography - Fatal编程技术网

C++中的错误,该怎么办?:找不到OrSoo::写(long *,un签署int) 我试图用Turbo C++编写存储在二进制文件中的数据。但它显示了一个错误 could not find an match for ostream::write(long *, unsigned int)

C++中的错误,该怎么办?:找不到OrSoo::写(long *,un签署int) 我试图用Turbo C++编写存储在二进制文件中的数据。但它显示了一个错误 could not find an match for ostream::write(long *, unsigned int),c++,c,steganography,C++,C,Steganography,我想将一个4字节长的数据写入该文件。当我尝试使用char指针写入数据时。它运行成功。但我想存储大量的值,例如245454 只能长时间储存 我不知道如何将1字节转换成位。我有1字节的数据作为字符。 此外,我试图做的是将4个字符转换为long并将数据存储到其中。另一方面,我想把它颠倒过来,以便检索我写了多少字节的数据 long *lmem; lmem=new long; *lmem=Tsize; fo.write(lmem,sizeof(long));// error occurs here del

我想将一个4字节长的数据写入该文件。当我尝试使用char指针写入数据时。它运行成功。但我想存储大量的值,例如245454 只能长时间储存

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

long *lmem;
lmem=new long;
*lmem=Tsize;
fo.write(lmem,sizeof(long));// error occurs here
delete lmem;
我正在实现隐写术,我已经成功地将txt文件存储到图像中,但现在正在尝试检索该文件数据

编辑:

我正在使用涡轮编译器

把它变成一个字符*


我相信写作需要一个字符,而不是很长的时间*

ostream& write ( const char* s , streamsize n );
一,


这里有几个问题

首先,您不需要创建一个全新的long来存储Tsize。您可以创建一个指向已有Tsize的指针

其次,写调用采用字节流。您需要做的是将指针投射到char*

像这样:

fo.write( static_cast<char*>(&Tsize), sizeof(Tsize) );
第三,像这样写一篇很长的文章效率很低。如果您有一个大的长值数组要写入,请使用单个写入调用获取所有长值,如:

fo.write( static_cast<char*>(array), sizeof(*array) * array_count );

我很确定静态转换适用于这里的指针,但如果它不这样做,则会将代码更改为使用reinterpret\u cast。

它会保留我在long中存储的数据吗。i、 我初始化的e值?@Shantanu只要long变量仍在作用域中且内存未被删除,那么存储的值在写入值之前和之后都是相同的。@Shantanu换句话说,所有类型转换都是将相同的数据视为不同的类型。它不会修改原始数据。@Yacoby:thx作为答案,我将在15分钟内检查我的数据是否被保留后返回。@Yacoby:will重新解释Turbo编译器中的\u cast工作。我不是在VC++@Tom yes u r rit工作。写需要字符。但我不会因为害怕丢失数据而打字。我不知道它是否能够保持数据的原样?static_cast无法转换它在父/子关系上工作的不相关类型。它无法从long*转换为char*。
ostream& write ( const char* s , streamsize n );
const long L = Tsize;
fo.write(reinterpret_cast<const char*>(&L),sizeof(L));
fo.write( static_cast<char*>(&Tsize), sizeof(Tsize) );
fo.write( static_cast<char*>(array), sizeof(*array) * array_count );