簡體   English   中英

從C ++ Visual 2006遷移到V2010 CFile到ifstream

[英]Migration from C++ Visual 2006 to V2010 CFile to ifstream

我想遷移一些用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();

??

閱讀文檔后 ,我的回答如下:

ifstream *fInp;
//...
fInp->read(buffer, iMaxBuffer);

if (*fInp)
    std::cout << "read " << iMaxBuffer << " characters successfully.";
else
    std::cout << "only " << fInp->gcount() << " could be read";

CFile和ifstream根本不是真正相關的,不確定為什么要用ifstream替換CFile。

有沒有原因不能使用CFile? 它仍應與VS的更高版本一起使用。

編輯:

除了VB_overflow的答案,我想如果您真的需要iStatus變量而不是僅使用if檢查fInp,則可以執行以下操作。

int iStatus = fInp->failbit;

如果為真,則表示它沒有失敗。 我想我更喜歡只做一個if(fInp)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM