using namespace std;
struct WebSites
{
string siteName;
int rank;
string getSiteName() { return siteName; }
int getRank() { return rank; }
WebSites(string const&, int);
WebSites();
};
WebSites::WebSites(string const& siteName, int rank) {
this->siteName = siteName;
this->rank = rank;
}
WebSites::WebSites() {}
ostream& operator << (ostream& stream, WebSites const& data) {
stream << data.rank << " " << data.siteName.size() << " " << data.siteName<< endl;
return stream;
}
istream& operator >> (istream& stream, WebSites data) {
stream >> data.siteName >> data.rank;
return stream;
}
int main() {
WebSites s1("www.google.co.uk", 1);
//write to file
ofstream writer("chou.dat", ios::out | ios::binary); //i'll add ios::app later
if (!writer) {
cout << " error opening file " << endl;
return -1;
}
else {
writer << s1.getSiteName() << " " << s1.getRank() << endl;
}
writer.close();
//read file
fstream writerR("chou.dat", ios::binary | ios::in | ios::ate);
WebSites read;
while (writerR >> read) {
cout << read.siteName << " rank: "<< read.rank << endl;
}
writerR.close();
return 0;
}
Может кто-нибудь сказать мне, почему эта программа не будет читать и отображать консоль файла ??? Я имею в виду, что он пишет отлично. Я попытался изменить материал, но ничего не работал. Я проверил аналогичный код в Интернете и все еще ничего.C++ File I/O Я не могу прочитать файл .dat
'fstream writerR' <- если это для чтения, почему не' ifstream'? –
Зачем вы называете поток чтения 'writeR'? Почему бы не назвать его «читателем»? Также всегда проверяйте, открыт ли файл до того, как вы попытаетесь его прочитать. – NathanOliver
Не уверен, что это проблема, но вы передаете ios :: ate в open, что заставляет файл искать до конца. С конца файла ничего не читать. Также я бы предположил, что лучше использовать поток входных файлов (ifstream), и вы не можете прочитать целую структуру, как вы пытаетесь сделать, если вы пишете каждое поле отдельно. Вы указываете двоичный режим, но вы действуете так, как будто вы сбрасываете текст. Как я вижу, у этого кода не одна, а пара проблем. –