【问题标题】:Cast int to void* and void* to int for TMemoryStream->WriteBuffer (C++Builder XE7)将 int 转换为 void* 并将 void* 转换为 TMemoryStream->WriteBuffer (C++Builder XE7) 的 int
【发布时间】:2015-12-03 03:35:37
【问题描述】:

我使用TMemoryStream 类及其WriteBuffer 方法将数据写入流。我需要读写int变量。

void __fastcall WriteBuffer(const void *Buffer, int Count)
void __fastcall ReadBuffer(void *Buffer, int Count)

下面的代码是否正确?

写作

int i = 5;
stream->WriteBuffer((void*)&i, sizeof(int));

阅读

stream->ReadBuffer((void*)&i, sizeof(int));

【问题讨论】:

  • 看起来不错 - 有什么问题?

标签: c++ c++11 int c++builder void


【解决方案1】:

下面的代码是否正确?

是的。尽管不需要类型转换,因为任何指针都可以传递给void*(当然要考虑const-正确性):

int i = 5;
stream->WriteBuffer(&i, sizeof(int));

int i;
stream->ReadBuffer(&i, sizeof(int));

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-23
    • 1970-01-01
    • 2019-11-19
    • 2013-11-18
    • 1970-01-01
    相关资源
    最近更新 更多