C++ 向量<;char>;到int vs.vector<;wchar_t>;整型

C++ 向量<;char>;到int vs.vector<;wchar_t>;整型,c++,type-conversion,fstream,C++,Type Conversion,Fstream,所以我有以下功能: template < typename T > void SomeClass::ReadBinary(T& Res) { size_t sBytesToRead = sizeof(T); Res = 0; std::vector<char> vcBuffer(sBytesToRead); m_Fstream.read(&vcBuffer[0], sBytesToRead); // tbd -

所以我有以下功能:

template < typename T >
void SomeClass::ReadBinary(T& Res)
{
    size_t sBytesToRead = sizeof(T);

    Res = 0;
    std::vector<char> vcBuffer(sBytesToRead);
    m_Fstream.read(&vcBuffer[0], sBytesToRead);

    // tbd - use reintepert_cast 
    Res = reinterpret_cast<T>(&vcBuffer[0]);
}
我得到了不同的结果(对于
Res
,意味着不同的int值)。我有点希望这里会有问题。在这两种情况下,从文件读取字节很可能是不同的

我有点迷路了,不知道如何解决这个问题。有什么想法吗


T
是:
uint8\u T
uint16\u T
&
uint32\u T
,如果要从流中读取二进制值,需要:

template < typename T >
void SomeClass::ReadBinary(T& Res)
{
    m_Fstream.read(&Res, sizeof(Res));
}

但我个人从未尝试过这一点。

我不知道(目前)为什么结果会不同,但你到底为什么要使用wchar\t向量?您正在读取字节。还有,T是什么?@n.m.请启发我。欣赏它。为什么要使用向量,使用原始数组,因为缓冲区的大小在编译时是已知的。这是正确的。我会改变的。但仍然无法解决我的问题。如果t是指针类型,则返回的是本地托管变量的地址。一旦函数返回,缓冲区就不再存在。取消对返回指针的引用是错误的。如果T不是指针,那么您正在将地址转换为非地址,这没有什么意义。这是不正确的
m_Fstream
的类型为
std::wfstream
where,不获取任何类型。
template < typename T >
void SomeClass::ReadBinary(T& Res)
{
    m_Fstream.read(&Res, sizeof(Res));
}
    m_Fstream.read(&Res, sizeof(Res)/sizeof(decltype(m_Fstream)::char_type));