Al usar iostream en C++ en Linux, muestra la salida del programa en el terminal, pero en Windows solo guarda el resultado en un archivo stdout.txt. ¿Cómo puedo, en Windows, hacer que la salida aparezca en la consola?Cómo dar salida a la consola en C++/Windows
Respuesta
Como mencionaste stdout.txt lo busqué en Google para ver exactamente qué crearía una stdout.TXT; Normalmente, incluso con una aplicación de Windows, la salida de la consola va a la consola asignada, o a ninguna parte si no está asignada.
Por lo tanto, suponiendo que está utilizando SDL (que es lo único que apareció stdout.txt), debe seguir el consejo here. O bien freopen stdout y stderr con "CON", o las otras soluciones de engarce/compilación allí.
En caso de que el enlace se rompe una vez más, aquí es exactamente lo que se hace referencia desde libSDL:
¿Cómo evitar la creación de stdout.txt y stderr.txt?
"Creo que dentro del proyecto de Visual C++ que viene con SDL hay un objetivo de SDL_nostdio> que puedes construir que hace lo que quieres (TM)."
"Si defines" NO_STDIO_REDIRECT "y recompilas SDL, creo que solucionará el problema." >> (Respuesta por cortesía de Bill Kendrick)
Su aplicación debe compilarse como una aplicación de consola de Windows.
Supongo que está utilizando alguna versión de Visual Studio? En Windows, std::cout << "something";
debe escribir algo en una ventana de consola SI su programa está configurado en la configuración del proyecto como un programa de consola.
En primer lugar, ¿qué compilador o entorno de desarrollo está utilizando? Si es Visual Studio, debe crear un proyecto de aplicación de consola para obtener la salida de la consola.
En segundo lugar,
std::cout << "Hello World" << std::endl;
debería funcionar en cualquier aplicación de consola de C++.
No, eso envía a salida estándar, y eso no siempre se escribe en la consola (dependiendo de cómo se asigna). De ahí la pregunta del OP, y la razón por la que leí este hilo casi dos años después. :-) – winwaed
Puede agregar una consola a una aplicación que no sea de consola de Windows utilizando el proceso descrito en Adding Console I/O to a Win32 GUI App.
Hay a whole thread on gamedev.net sobre el tema.
Si está utilizando Visual Studio resulta necesario modificar la propiedad proyecto: Propiedades de configuración -> Enlazador -> Sistema -> subsistema.
Esto se debe establecer en: consola (/ SUBSISTEMA: CONSOLA)
También debe cambiar su WinMain que ser de esta firma:
int main(int argc, char **argv)
{
//...
return 0;
}
Si está utilizando Visual Studio, se debería funcionar bien!
Aquí está un ejemplo de código:
#include <iostream>
using namespace std;
int main (int) {
cout << "This will print to the console!" << endl;
}
Asegúrese de que ha seleccionado una aplicación de consola Win32 al crear un nuevo proyecto. Aún así, puede redirigir la salida de su proyecto a un archivo utilizando el interruptor de la consola (>>). Esto realmente redirigirá la tubería de la consola desde la salida estándar a su archivo. (por ejemplo, myprog.exe >> myfile.txt
).
¡Ojalá no me equivoque!
Si tiene una aplicación de Windows sin consola, puede crear una consola con la función AllocConsole. Una vez creado, puede escribir utilizando los métodos std :: cout normales.
Creo que todavía tiene que redirigir los descriptores io para que funcione (como el ejemplo de guicon). O alternativamente simplemente use OutputDebugString en su lugar. – rogerdpack
La función de API de Windows AllocConsole creará una ventana de consola para su aplicación.
si se debe usar subsistema: consola o subsistema: ventanas tipo de depende de si la forma en que desea iniciar su aplicación:
- Si utiliza el subsistema: consola , entonces obtienes todo el stdout escrito en la terminal. El problema es que si inicia la aplicación desde el Menú de inicio/Escritorio, usted (de forma predeterminada) obtiene una consola que aparece así como también la ventana de la aplicación (que puede verse bastante fea).
- Si usa el subsistema: windows, no obtendrá stdout/stderr aunque ejecute la aplicación desde una ventana DOS, Cygwin u otro terminal.
Si desea que el camino del medio, que es a la salida de la terminal si la aplicación se inició en un terminal, a continuación, siga el enlace que Lucas proporciona en su solución (http://dslweb.nwnexus.com/~ast/dload/guicon.htm)
Como referencia, me encontré en este problema con una aplicación que quiero ejecutar en modo Windows normal o modo por lotes (es decir, como parte de un script) dependiendo de los modificadores de la línea de comandos. ¡La diferenciación total entre la consola y las aplicaciones de Windows es un poco extraña para la gente de Unix!
Necesita cambiar un poco el ejemplo en el enlace: reemplace AllocConsole() con AttachConsole (ATTACH_PARENT_PROCESS) para enviarlo a la misma consola que inició la aplicación, si la aplicación se inició en una consola . Si no, esta función devolverá 0. – Ruud
Si usa MinGW, agregue una opción, -Wl,subsystem,console
o -mconsole
.
Para la depuración en Visual Studio se puede imprimir en la consola de depuración:
OutputDebugStringW(L"My output string.");
No necesariamente tienen que realizar ningún cambio en su código (ni para cambiar el tipo SUBSYSTEM
). Si lo desea, también puede simplemente pipe stdout and stderr to a console application (una versión de Windows de cat
funciona bien).
- 1. Dar formato a la salida de la consola C++
- 2. cómo dar salida a una cadena a variable y consola al mismo tiempo
- 3. vbscript salida a la consola
- 4. cómo dar salida a cada línea en un archivo python
- 5. ¿Cómo puedo mostrar más decimales en la consola de salida?
- 6. Cómo dar salida a una cadena con comillas dobles?
- 7. Cómo dar salida a elementos duplicados usando XSLT?
- 8. Salida de la consola MATLAB
- 9. C++ cambio de salida en la consola
- 10. PowerShell: envíe la salida de la consola al archivo sin ensordecer esta salida de la consola
- 11. ¿Cómo suprimir la salida de la consola en Python?
- 12. Cómo filtrar la salida de la consola en Xcode
- 13. Redirigir la salida de la consola a winforms ListBox
- 14. Redirigir la salida de seguimiento a la consola
- 15. Cómo dar salida a contenido variable en la ventana "LogCat" en Android-ndk
- 16. Cómo dar salida a la cadena Unicode a RTF (usando C#)
- 17. Sin salida de consola en cout
- 18. cscript - imprimir salida en la misma línea en la consola?
- 19. Cómo dar salida a mi texto de la línea de comando de ruby en diferentes colores
- 20. psql -o no es lo que esperaba (cómo dar salida a la respuesta de db a un archivo de salida)
- 21. Ver la salida de la consola eliminada
- 22. Salida de información de depuración en la consola
- 23. Consola de formato Salida
- 24. decodificación mysql_real_escape_string() para dar salida HTML
- 25. rieles - Reorientación de salida de la consola a un archivo
- 26. Salida a la consola de Chrome desde Node.js
- 27. ¿No hay salida a la consola desde una aplicación WPF?
- 28. Salida de la consola Java - Archivo Y a la consola AMBOS
- 29. dar un título a cada consulta SQL de salida
- 30. Superíndice en la salida de la consola C++
¡Muchas gracias! Esto me ha estado molestando durante bastante tiempo –