Pregunta

He estado en todas partes las preguntas ifstream aquí en la SO y todavía estoy teniendo problemas para leer un archivo de texto simple. Estoy trabajando con Visual Studio 2008.

Aquí está mi código:

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

Me han confirmado que el entrada.txt archivo está en el "directorio de trabajo" correcta comprobando el valor de argv[0]. El método Open no va a funcionar.

También estoy teniendo problemas para debugging- debería no ser capaz de establecer una vigilancia sobre infile.good() o infile.is_open()? Sigo recibiendo

Error: member function not present.

EDIT:. código actualizado lista con código completo del archivo .cpp

ACTUALIZACIÓN: El archivo no estaba en el directorio de trabajo actual. Este es el directorio donde archivo de proyecto se encuentra el. Se trasladó allí y funciona al depurar en VS.NET.

Otros consejos

A veces Visual Studio pone su archivo EXE lejos de su código fuente. Por defecto VS sólo se puede buscar el archivo a partir de su archivo EXE. Este proceso es un paso simple para obtener el archivo txt de entrada desde el mismo directorio que el código fuente. En caso de que no desea arreglar su configuración 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);

Esperamos que esto ayuda a otras personas para una solución rápida. Me tomó un tiempo para encontrar esta configuración por nosotros mismos.

He encontrado dos problemas en su código:

a) error de sintaxis en "ios :: comió || ios :: in" => debe ser "ios :: comieron | ios :: en"

b) "ios :: comieron" establece el cursor hasta el final del archivo - por lo que no reciben nada cuando se inicia la lectura

Así que sólo eliminan "ios :: comieron" y que están muy bien:)

ciao, Chris

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

|| es el operador lógico OR, no el operador de bits (como dijo Bill El Lizzard).

Así que supongo que está haciendo el equivalente a:

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

(suponiendo ni ios :: comió o ios :: en son 0)

Trate de usar:

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

También estoy teniendo problemas para debugging- qué no iba a ser capaz de establecer una vigilancia sobre "infile.good ()" o "infile.is_open ()"? Me pone "Error:. Función miembro no está presente"

e incluye el correcto:

#include <fstream> 

etc.

scroll top