⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 a750binf.cpp

📁 quinto esempi vari per c++ (schemi base)
💻 CPP
字号:
// nuovi elementi: ios::binary, clear()
// nuovi concetti: file binario
#include <iostream>
#include <fstream>
#include <iomanip>

using namespace std;

void acapo() {
  while (cin.get() != '\n') continue;
}

struct tfilm {
  char titolo[36];    // titolo del film
  char regista[22];   // nome del regista
  short int anno;     // anno di uscita
  float valutazione;  // valutazione del film
};

const char * const file = "films.dat";

int main() {
  cout.setf(ios::showpoint);
  cout.setf(ios::fixed, ios::floatfield);
  cout << setprecision(1);

  tfilm film;

  // mostra il contenuto iniziale
  ifstream fin;
  fin.open(file, ios::in | ios::binary);   // file binario
  if (fin) {
    cout << "Il contenuto del file "
      << file << " e' il seguente:\n";
    while (fin.read((char *) &film, sizeof film)) {
      cout.setf(ios::left, ios::adjustfield);
      cout << setw(30) << film.titolo << ": "
	<< setw(20) << film.regista;
      cout.setf(ios::right, ios::adjustfield);
      cout << setw(8)  << film.anno;
      cout << setw(8)  << film.valutazione << "\n";
    }
  }
  fin.close();

  // aggiungi altri dati
  ofstream fout(file, ios::out | ios::app | ios::binary);
  if (!fout) {
    cerr << "Non riesco ad aprire il file " << file << " in scrittura!\n";
    exit(1);
  }

  cout << "Introdurre il titolo del film (<Invio> per terminare):\n";
  cin.get(film.titolo, 36);
  while (film.titolo[0] != '\0') {
    acapo();
    cout << "Regista: ";
    cin.get(film.regista,22);
    acapo();
    cout << "Anno: ";
    cin >> film.anno;
    cout << "Valutazione (0-10): ";
    cin >> film.valutazione;
    fout.write((char *) &film, sizeof film);
    acapo();
    cout << "Introdurre il titolo del film"
      " (<Invio> per terminare):\n";
    cin.get(film.titolo, 36);
  }
  fout.close();

  // mostra il file modificato
  fin.clear();   // non necessario in Turbo C++
  fin.open(file, ios::in | ios::binary);
  if (fin) {
    cout << "Il seguente e' il contenuto del file " << file
      << " dopo l'aggiornamento:\n";
    while (fin.read((char *) &film, sizeof film)) {
      cout.setf(ios::left, ios::adjustfield);
      cout << setw(30) << film.titolo << ": "
	<< setw(20) << film.regista;
      cout.setf(ios::right, ios::adjustfield);
      cout << setw(8)  << film.anno
	<< setw(8)  << film.valutazione << "\n";
    }
  }
  fin.close();

  return 0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -