Domanda

Sono stato in tutto le domande ifstream qui su SO e sto ancora avendo difficoltà a leggere un file di testo semplice. Sto lavorando con Visual Studio 2008.

Ecco il mio codice:

// CPPFileIO.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include <fstream>
#include <conio.h>
#include <iostream>
#include <string>

using namespace std;


int _tmain(int argc, _TCHAR* argv[])
{

    ifstream infile;
    infile.open("input.txt", ifstream::in);

    if (infile.is_open())
    {
        while (infile.good())
            cout << (char) infile.get();
    }
    else
    {
        cout << "Unable to open file.";
    }
    infile.close();
    _getch();
    return 0;
}

mi hanno confermato che il input.txt file si trova nella "directory di lavoro" corretta controllando il valore di argv[0]. Il metodo Open semplicemente non funzionerà.

Inoltre sto avendo difficoltà debugging- dovrebbe non essere in grado di impostare un orologio sul infile.good() o infile.is_open()? Continuo a ricevere

Error: member function not present.

EDIT:. il codice elenco aggiornato con il codice completo da file cpp

UPDATE: Il file non è stato nella directory di lavoro corrente. Questa è la directory dove il file di progetto si trova. Spostato lì e funziona durante il debug in VS.NET.

Altri suggerimenti

A volte Visual Studio mette il file exe lontano dal codice sorgente. Per impostazione predefinita VS può apparire solo per il file a partire dal file exe. Questo processo è un passo semplice per ottenere il file txt input dalla stessa directory del codice sorgente. Se non si vuole risolvere la configurazione IDE.

using namespace std;

ifstream infile;

string path = __FILE__; //gets source code path, include file name
path = path.substr(0,1+path.find_last_of('\\')); //removes file name
path+= "input.txt"; //adds input file to path

infile.open(path);

Speriamo che questo aiuta altre persone per una soluzione rapida. Mi c'è voluto un po 'per trovare questa configurazione me stesso.

Ho trovato due problemi nel codice:

a) errore di sintassi in "ios :: mangiato || ios :: in" => dovrebbe essere "ios :: mangiato | ios :: in"

b) "ios :: mangiato" imposta il cursore alla fine del file - così si ottiene nulla quando si inizia la lettura

Quindi, solo rimuovere "ios :: mangiato" e si sta bene:)

Ciao, Chris

infile.open ("input.txt", ios::ate || ios::in);

|| è la logica o l'operatore, non l'operatore bit a bit (come ha detto Bill The Lizzard).

quindi credo che si sta facendo l'equivalente di:

infile.open ("input.txt", true);

(supponendo né ios :: mangiato o ios :: in sono 0)

Provare a utilizzare:

ifstream fStm("input.txt", ios::ate | ios::in);
  

Sono anche problemi debugging- non dovrei essere in grado di impostare un orologio sul "infile.good ()" o "infile.is_open ()"? Continuo a ricevere "Errore:. Funzione membro non presente"

e il corretto comprende:

#include <fstream> 

ecc.

scroll top