c++ macos terminal stdout output-formatting

c++ - Rebobinar std:: cout para volver al comienzo de una línea



macos terminal (3)

Estoy escribiendo una herramienta de línea de comandos para Mac OS X que procesa un grupo de archivos. Me gustaría mostrarle al usuario el archivo actual que se está procesando, pero no quiero que un millón de archivos contaminen la ventana de la terminal.

En su lugar, me gustaría usar una sola línea para generar la ruta del archivo, luego reutilizar esa línea para el próximo archivo. ¿Hay un personaje (u otro código) para enviar a std::cout para lograr esto?

Además, si quisiera volver a orientar esta herramienta para Windows, ¿la solución sería la misma para ambas plataformas?


"/ r" debería funcionar para Windows y Mac OS X.

Algo como:

std::cout << "will not see this/rwill see this" << std::flush; std::cout << std::endl; // all done


No tengo acceso a un mac, pero desde el punto de vista de la consola, esto dependerá en gran medida de cómo trate los caracteres de retorno de carro y avance de línea. Si puede enviar literalmente uno u otro a la consola, desea enviar solo un retorno de carro.

Estoy bastante seguro de que Mac trata los retornos de carro y las alimentaciones de línea de manera diferente a * nix y windows.

Si está buscando actualizaciones in situ (p. Ej., Sobrescribir la línea actual), le recomiendo consultar la lib de curses . Esto debería proporcionar una plataforma independiente de medios para hacer lo que está buscando. (porque, incluso utilizando C ++ estándar, no hay medios independientes de plataforma de lo que está pidiendo).


std :: cout interpreta "/ r" como volver al inicio de la línea, si no quieres agregar "<< endl" cada vez, usa "/ n"

std::cout << "this will work!/nSee... a new line!" << std::endl;