我已經用C++編寫了一個代碼,該代碼從文本文件中讀取或使用ifstream
/ofstream
創建新的代碼。我想添加一個支票.is_open
成員函數fstream
查看文件是否成功打開。它在主循環內正常工作。然後我試圖創建外循環功能用於此目的,並調用它裏面main
,和我有以下錯誤:C++無法檢查函數中的ifstream/ofstream.is_open()
std::ios_base::ios_base(const std::ios_base&)
is private.
是否有可能使主環路以外的檢查?怎麼樣?我究竟做錯了什麼?
如果您能提供幫助,我將不勝感激。你可以找到下面的代碼。
P.S.我是C++中的新手,所以如果你看到任何問題,請不要過分批評不專業的編程方法。儘管任何改進建議都值得歡迎。
#include <iostream>
#include <fstream>
using namespace std;
void check_opened(ifstream toget, ofstream togive){
if(toget.is_open()){
cout<<"able to open file(toread.txt)"<<endl;
}
else {
cout<<"failure"<<endl;
}
if(togive.is_open()){
cout<<"able to create/open a file(newone.txt)"<<endl;
}
else {
cout<<"failure"<<endl;
}
}
int main() {
ifstream toget;
ofstream togive;
toget.open("toread.txt");
togive.open("newone.txt");
check_opened(toget,togive);
toget.close();
togive.close();
return 0;
}
無論您是否有'is_open'調用,都會發生錯誤。製作[mcve]的一部分正在挑戰你的假設。 – chris
您正在將'toget'和'togive'值傳遞給'check_opened'函數。它看起來不允許複製'ifstream'和'ofstream's。嘗試將它們作爲引用或指針傳遞。 – gurka
@古爾卡,非常感謝,我用它作爲參考,它的工作。 – UserRR