我从文件中读取数据时遇到了小问题。我希望能够读取 wstring 以及任意大小的原始数据块(大小以字节为单位)。
std::wfstream stream(file.c_str());
std::wstring comType;
stream >> comType;
int comSize;
stream >> comSize;
char *comData = new char[comSize];
memset(comData, 0, comSize);
stream.read(comData, comSize);
//error C2664 : 'std::basic_istream<_Elem,_Traits>::read'
// : cannot convert parameter 1 from 'char *' to 'wchar_t *'
也许我使用了错误的流,或者类似的东西。基本上,我想读取一个 wstring,数据的大小(可以是任意数量的字节),然后是那么多字节的组件数据。显然,我无法读取 char,因为模板假定为 wchar_t。
我可以读取 wchar_t,但必须确保数据按 sizeof(wchar_t) 对齐存储。否则,我最终可能会破坏流。一种情况是数据为 15 个字节。我必须读取 16 个字节,然后屏蔽不需要的字节,将流寻找到 15 个字节的偏移量(如果可能的话,使用 wchar_t 模板化?)以便能够读取下一个数据块。
显然,应该有更好的方法来实现我想要做的事情。