C++ Win32 是字符串问题

C++ Win32 IStream to string problems

本文关键字:问题 字符串 Win32 C++      更新时间:2023-10-16

注意:我已经用谷歌搜索,搜索并尝试了我发现的每一件事。

真正的问题是我正在尝试将IStream用于诸如get, getline, read, put

错误,IStream has no member named 'read'

代码:

// For version info and etc
HRSRC srcTest =   FindResource(NULL, MAKEINTRESOURCE(2), RT_VERSION);
HGLOBAL hGlobal = LoadResource(NULL, srcTest);
// Gets the size of the resource, and locks it to get a pointer
int size = SizeofResource(NULL, srcTest); 
LPVOID resPtr = LockResource(hGlobal); 
hGlobal = GlobalAlloc(GMEM_FIXED, size); 
// Copies the raw data into allocated space
 memcpy(hGlobal, resPtr, size);
// Cleans
FreeResource(hGlobal);
// Creates a stream 
IStream* in = NULL;
CreateStreamOnHGlobal(hGlobal, true, &in);

// One example test
std::string ret;
char buffer[4096];
while (in->read(buffer, sizeof(buffer)))
ret.append(buffer, sizeof(buffer));
ret.append(buffer, in.gcount());
资源

直接来自资源文件中的VERSION_INFO。我已经测试过了,这绝对不是问题。

谢谢。

C++区分

大小写;该方法名为Read()(它实际上是在IStream继承自ISequentialStream中定义的(。

请注意,它

需要三个参数,而不是您尝试传递它的两个参数。

HRESULT Read( [out] void *pv, [在] 乌龙cb,[出]乌龙 *印刷电路板读取(;

参数

pv [out] 指向流数据读入的缓冲区的指针。

cb [in] 要从流对象读取的数据字节数。

pcbRead [out] 指向接收实际 ULONG 变量的指针 从流对象读取的字节数。