¿Hay alguna forma de obtener una condición de error específica cuando falla una secuencia abierta de C++? Es decir, si falló porque el archivo no existía, o los permisos eran incorrectos, o básicamente. Básicamente estoy buscando una funcionalidad equivalente a errno para fopen() en C. normal¿Se puede obtener una condición de error específica cuando falla una secuencia abierta de C++?
GCC parece configurar correctamente el errno , pero eso no parece ser requerido por el estándar de C++ y no puedo determinar si esto es solo un artefacto de la forma en que implementaron las secuencias, o una característica deliberada (y por lo tanto, no sé si persistirá en versiones).
¿Hay alguna manera de obtener esta información de manera confiable, ya sea en C++ estándar o de forma no accidental en uno o más compiladores principales?
¿Tiene algún vínculo a dónde se presenta esto en el documento VS? He estado mirando las páginas de transmisión en MSDN pero no puedo encontrar ninguna mención de este comportamiento. No digo que no funcione así, pero sería bueno ver algún documento oficial. –
No creo que esté dispuesto en los documentos de VS. O tal vez mi google-foo es demasiado débil. Sin embargo, encontré varias publicaciones de foros que respaldan mi recuerdo de que fopen y similares son envoltorios de sus funciones de winapi equivalentes. Así que fopen está llamando a CreateFile, que establece el código de error. Independientemente, una prueba rápida debe confirmar (al menos para los errores de archivo fáciles de simular). Lo haría yo mismo y publicaría los resultados. Pero, por desgracia, no tengo fácil acceso a Visual Studio en este momento. –