延續上一篇。學妹在 while 迴圈中,想透過輸入的方式取得檔案名稱,利用一個 ifstream 物件重覆的開啟關閉,但是第二次迴圈就會開啟檔案失敗。程式碼如下:
解決方法很解單。因為在 while (ifs >> buffer) 這段結束之後,ifs 物件的 failbit 就被設成 1 了。因此重新開啟時無論如何都會失敗。要重覆使用 ifs 物件,就要在重覆使用之前將狀態旗標清掉就行了。參考下面程式碼:
ifstream ifs; string filename, buffer; for (;;) { cin >> filename; ifs.open(filename.c_str()); if (ifs.fail()) { // fail } while (ifs >> buffer) { // do something } ifs.close();} |
|
解決方法很解單。因為在 while (ifs >> buffer) 這段結束之後,ifs 物件的 failbit 就被設成 1 了。因此重新開啟時無論如何都會失敗。要重覆使用 ifs 物件,就要在重覆使用之前將狀態旗標清掉就行了。參考下面程式碼:
ifstream ifs; string filename, buffer; for (;;) { cin >> filename; ifs.open(filename.c_str()); if (ifs.fail()) { // fail } while (ifs >> buffer) { // do something } ifs.close(); ifs.clear(); } |
全站熱搜
留言列表