Я пишу инструмент командной строки для Mac OS X, который обрабатывает набор файлов. Я хотел бы показать пользователю текущий обрабатываемый файл, но не хочу огромное количество файлов, загрязняющих окно терминала.
Вместо этого я хотел бы использовать одну строку для вывода пути к файлу, затем повторное использование что строка для следующего файла. Есть ли символ (или некоторый другой код) для вывода к std::cout
выполнять это?
Кроме того, если бы я хотел перенастроить этот инструмент для Windows, то решением было бы то же для обеих платформ?
"\r" должно работать как для windows так и для Mac OS X.
Что-то вроде:
std::cout << "will not see this\rwill see this" << std::flush;
std::cout << std::endl; // all done
У меня нет доступа к Mac, но с точки зрения чистой консоли это будет во многом зависеть от того, как он обрабатывает символы возврата каретки и перевода строки. Если вы можете буквально отправить одно или другое на консоль, вы хотите отправить только возврат каретки.
Я почти уверен, что Mac обрабатывает возврат каретки и перевод строки иначе, чем * nix и windows.
Если вы ищете обновления на месте (например, перезаписываете текущую строку), я бы рекомендовал посмотреть библиотеку curses
. Это должно предоставить независимые от платформы средства для выполнения того, что вы ищете. (потому что даже при использовании стандартного C ++ не существует независимых от платформы средств того, что вы просите).