5

画面に出力しようとしているファイルがありますが、返されるのは "0x28fe88" だけです。ファイル自体は 13 列 x 数百行です。

#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;
}

それ以外の場合は、完全なコードを投稿することはありませんが、高射砲を捕まえるのに十分なほど短いことを願っています.

4

1 に答える 1

10

cout << infile1.rdbuf();ファイルへのポインタを印刷しているため、テキストファイルを印刷するには、 this を使用します。

編集:これがうまくいかない場合、それに最も近いのは、ファイルを1文字ずつ読み取ることです。文字列を使用してこれを回避する方法は他にもありますが、このコードは問題なく機能します。

while(infile1.good()) 
    cout << (char)infile1.get();

ファイルが読める状態で文字コードを読み取り、すぐに char に変換して (UNICODE の場合は変更が必要になる場合があります)、出力します。

于 2013-08-13T20:35:31.483 に答える