我想迁移一些用C ++ Visual 2006做的C ++ V2010编写的代码。 那是:
CFile *fInp;
...
int iStatus = fInp->Read(chMsg, iMaxBuffer);
现在我想尝试这样做:
ifstream *fInp;
...
int iStatus = fInp->read(chMsg, iMaxBuffer);
但CFile :: Read返回int,其值为已移动了多少个字符,但是ifstream :: read不是。 我怎样才能获得这个价值?
这会起作用吗?
fInp->read(chMsg, iMaxBuffer);
int iStatus = fInp->gcount();
...
答案 0 :(得分:1)
阅读doc后,我的答案如下:
ifstream *fInp;
//...
fInp->read(buffer, iMaxBuffer);
if (*fInp)
std::cout << "read " << iMaxBuffer << " characters successfully.";
else
std::cout << "only " << fInp->gcount() << " could be read";
答案 1 :(得分:0)
CFile和ifstream完全不相关,不确定为什么要尝试用ifstream替换CFile。
你有没有理由不能使用CFile?它仍然适用于VS的更高版本。
编辑:
除了VB_overflow的答案之外,如果你觉得你真的需要一个iStatus变量而不是只用if来检查fInp,我想你可以做这样的事情。
int iStatus = fInp->failbit;
如果确实如此,则表示它没有失败。我想我更喜欢做一个if(fInp)。