在我的OpenFile函數中,它應該提示用戶輸入文件名並將文件讀入數組。我不斷收到錯誤:no match for 'operator>>' (operand types are 'std::ifstream {aka std::basic_ifstream<char>}' and 'entryType')
。我做了一些研究,發現了一些與這個錯誤有關的類似問題。我沒有找到有用的問題,因爲他們寫得很差。我認爲問題可能是使用void函數或聲明數組作爲entryType
的一部分。我知道我得到這個錯誤,因爲編譯器查找了一個可以處理(istream) >> (entryType)
但沒有找到的函數。我將如何修復我的代碼以擺脫此錯誤?C++將文件讀入數組錯誤:'operator >>'不匹配
頭文件
include<string>
using namespace std;
enum Title {Mr, Mrs, Ms, Dr, NA};
struct NameType {
Title title;
string firstName;
string lastName;
};
struct AddressType {
string street;
string city;
string state;
string zip;
};
struct PhoneType {
int areaCode;
int prefix;
int number;
};
struct entryType {
NameType name;
AddressType address;
PhoneType phone;
};
const int MAX_RECORDS = 50;
代碼
entryType bookArray[MAX_RECORDS]; // entryType declared in header file
int main()
{
entryType userRecord;
string filename;
ifstream inData;
char searchOption;
OpenFile(filename, inData);
MainMenu(inData, filename);
return 0;
}
void OpenFile(string& filename, ifstream& inData)
{
do {
cout << "Enter file name to open: ";
cin >> filename;
inData.open(filename.c_str());
if (!inData)
cout << "File not found!" << endl;
} while (!inData);
if(inData.is_open())
{
for(int i=0; i<MAX_RECORDS;i++)
{
inData >> bookArray[i];
}
}
}
「entryType」類型沒有'operator >>'。 'std :: ifstream'根本不知道如何從文件讀入'entryType'。你需要爲你的類型重載'operator >>'。看看[這個問題](http://stackoverflow.com/questions/4421706/operator-overloading)什麼運營商重載是如何做到這一點。 –
@FrançoisAndrieux:我有點嫉妒OP。假設你會爲對象默認獲得一些很好的文件I/O行爲。在C++中。 – AndyG
你在哪裏告訴計算機如何將一系列字符解釋爲一個'entryType'?你的C++書籍以什麼方式不解釋這一點? –