私は画面に印刷しようとしているファイルを持っていますが、ファイル自体が13列から数百行であるときに返されるのはすべて "0x28fe88"です。C++どうやって.txtファイルをそのまま印刷しますか?
#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;
}
私は、そうでない場合は、完全なコードを投稿しないだろうが、私は非難をキャッチ保証しないように十分に短い願っています。
ifstreamオブジェクトを印刷しているファイルの内容は印刷されません。 –
'cout << infile1;' *はファイルの内容をstdoutに出力しません。オブジェクトのアドレスを出力しています。 – greatwolf
元のコードはストリームオブジェクトをストリームに挿入します。これは、C++ 11より前のストリームクラス(技術的には、基本クラス 'basic_ios')が、ストリームが良好な状態にあるかどうかを示す' void * 'への変換を持っているからです。 、そうでない場合はNULL以外のポインタ)。元のコード表示はこの変換演算子の結果です。 C++ 11では、変換はもはや存在しません。これは 'boolean(明示的な演算子bool()'に置き換えられました。これは、非ブール値の文脈で不思議な変換を導入することなく同じ目的を果たします。 –