Mam plik, który próbuję wydrukować na ekranie, ale wszystko, co zwraca, to "0x28fe88", kiedy sam plik ma 13 kolumn za kilkaset wierszy.C++ Jak wydrukować plik .txt dosłownie?
#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;
}
W innym wypadku nie opublikowałbym pełnego kodu, ale mam nadzieję, że jest wystarczająco krótki, aby nie gwarantować złapania flaka.
Nie drukujesz zawartości pliku, do którego drukujesz obiekt ifstream. –
'cout << infile1;' * nie * drukuje zawartość pliku na standardowe wyjście. Drukuje adres obiektu. – greatwolf
Oryginalny kod wstawia obiekt strumienia do strumienia. Działa to, ponieważ przed C++ 11, klasy strumieniowe (technicznie, klasa podstawowa 'basic_ios'), mają konwersję do' void * ', która wskazuje, czy strumień jest w dobrym stanie (zwraca wskaźnik zerowy, jeśli nie jest i w przeciwnym razie wskaźnik inny niż zerowy); co oryginalny kod wyświetla w wyniku tego operatora konwersji. W C++ 11 ta konwersja już nie występuje; został zastąpiony przez 'jawny operator bool()', który służy temu samemu celowi, bez wprowadzania tajemniczych konwersji w kontekstach nie-boolowskich. –