Ho un file che sto cercando di stampare sullo schermo, ma tutto ciò che restituisce è "0x28fe88", quando il file stesso è di 13 colonne di un paio di centinaia di righe.C++ Come si stampa un file .txt testualmente?
#include <iostream>
#include <fstream>
#include <istream>
#include <ostream>
#include <cstdlib>
using namespace std;
int main()
{
//Opens .txt file
ifstream infile1;
infile1.open("Taylor.txt");
//Fail check
if(infile1.fail())
{
cout << "File failed to open.\n";
exit(1);
}
//Prints file to screen (not correctly)
cout << infile1;
//Closes file
infile1.close();
return 0;
}
avrei altrimenti non pubblicare il codice completo, ma spero che sia abbastanza breve da non giustificare la cattura antiproiettile.
Non stai stampando il contenuto del file che stai stampando l'oggetto ifstream. –
'cout << infile1;' * non * stampa il contenuto del file su stdout. Sta stampando l'indirizzo dell'oggetto. – greatwolf
Il codice originale inserisce un oggetto flusso in un flusso. Funziona perché, prima di C++ 11, le classi di flusso (tecnicamente, la classe base 'basic_ios'), ha una conversione in' void * 'che indica se il flusso è in buono stato (restituisce un puntatore nullo se non lo è e un puntatore non nullo altrimenti); ciò che la visualizzazione del codice originale è il risultato di questo operatore di conversione. In C++ 11 la conversione non è più presente; è stato sostituito con 'explicit operator bool()', che ha lo stesso scopo senza introdurre misteriose conversioni in contesti non booleani. –