¿Es posible abrir un fstream en un archivo que no existe con ambos ios :: en & ios :: out sin obtener un error?fstream entrada y salida en el archivo inexistente
Respuesta
#include <iostream>
#include <fstream>
using namespace std;
int main() {
fstream f("test.txt", fstream::in | fstream::out);
cout << f.fail() << endl;
f << "hello" << endl;
f.close();
return 0;
}
Este código imprimirá 1
y no crear el archivo "test.txt", si no lo hace la salida. Por lo tanto, no es posible abrir y fstream en un archivo que no existe sin obtener un error.
Quizás quiso decir "filestr.fail () "y" filestr << "hello" << endl; "?! – Secko
@Secko Sí, gracias. –
#include <fstream>
ofstream out("test", ios::out);
if(!out)
{
cout << "Error opening file.\n";
return 1;
}
ifstream in("test", ios::in);
if(!in)
{
cout << "Error opening file.\n";
return 1;
}
Si se produce un error, se muestra el mensaje y se devuelve uno (1). Sin embargo, es posible compilar y ejecutar solo ofstream out("test", ios::out);
y ifstream in("test", ios::in);
sin ningún error. De cualquier forma, se crea el archivo test.
actualización: Para abrir un fstream
en un archivo que no existe para la entrada y salida (acceso aleatorio) sin obtener un error, se debe proporcionar en el fstream::in | fstream::out | fstream::trunc
(constructor o) open
llamada. Ya que el archivo no existe, truncar el archivo a cero bytes no es drama.
Usted habría desee un error al abrir un archivo que no existe cuando se especifica solamenteios::in
ya que nunca será capaz de leer de la corriente de lo que es mejor para fallar antes de tiempo.
Entonces, ¿por qué no abrir un archivo que no existe a través de un objeto de clase fstream arrojar un error? Ejemplo: fstream myfile; myfile.open ("this_file_doesn't_exist.txt"); // Esto no arroja ningún error. – Ketcomp
std::fstream f("test.txt", std::ios_base::out);
f.close(); //file now exists always
f.open("test.txt", fstream::in | std::ios_base::out);
//f is open for read and write without error
No he comprobado para garantizar que se abrirá sin error, pero me siento bastante seguro de que debería.
- 1. ARCHIVO vs fstream
- 2. std :: fstream no crea el archivo
- 3. Entrada línea por línea desde un archivo de entrada y tokenize usando strtok() y la salida en un archivo de salida
- 4. Crear objeto fstream desde un archivo * puntero
- 5. ¿Entrada y salida por lotes en Mathematica?
- 6. Reencaminamiento entrada y salida estándar de C
- 7. Tubería de entrada y salida en Java
- 8. ASP.NET publicar intentar copiar un archivo inexistente
- 9. Entrada/salida vs salida en Ada
- 10. Fstream no puede crear un nuevo archivo
- 11. descriptor de archivo de un std :: fstream
- 12. ¿Cómo ejecuto el comando sed con entrada y salida como el mismo archivo?
- 13. ¿FileDelete() devuelve verdadero o falso para el archivo inexistente?
- 14. Entrada y salida múltiple del instrumento VST
- 15. Hadoop MapReduce - un archivo de salida para cada entrada
- 16. Cómo adjuntar a un archivo con Fstream Fstream :: aplicación bandera parece no funcionar
- 17. Capturar salida JSP, guardar en el archivo
- 18. Abrir fstream con archivo con nombre de archivo Unicode en Windows usando el compilador no MSVC
- 19. Delphi estándar de página de códigos de entrada y salida
- 20. Ejecutar un subproceso, proporcionar entrada y salida correctamente en Java
- 21. C++ fstream - Creando banderas de formato propias
- 22. de cadenas de entrada y de salida en C
- 23. Uso de std: fstream cómo denegar el acceso (lectura y escritura) al archivo
- 24. salida de volcado en un archivo y el navegador
- 25. php.ini es inexistente Archivo de configuración cargada (ninguna)
- 26. El método depende del grupo inexistente - Testng
- 27. ¿Qué permisos tiene un archivo escrito con fstream?
- 28. Entrada/salida rápida en programación competitiva
- 29. ¿hay alguna manera de redirigir la entrada y la salida al mismo archivo?
- 30. ¿Debo cerrar un std :: fstream?
No olvides contestar o ayudar a quienes responden informándoles si ya has probado sus soluciones (o escríbelas con más detalles para que puedan adaptar sus respuestas). –