Ответ 1
"\ r" должен работать как для Windows, так и для Mac OS X.
Что-то вроде:
std::cout << "will not see this\rwill see this" << std::flush;
std::cout << std::endl; // all done
Я пишу инструмент командной строки для Mac OS X, который обрабатывает кучу файлов. Я хотел бы показать пользователю текущий обрабатываемый файл, но не хочу, чтобы файлы bazillion загрязняли окно терминала.
Вместо этого я хотел бы использовать одну строку для вывода пути к файлу, а затем повторно использовать эту строку для следующего файла. Есть ли символ (или какой-либо другой код) для вывода на 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
lib. Это должно обеспечить независимое от платформы средство делать то, что вы ищете. (потому что, даже используя стандартный С++, нет независимого от платформы средства для того, что вы просите).
std:: cout интерпретирует "\ r" как возврат к началу строки, если вы не хотите добавлять "< < endl" каждый раз, используйте "\n"
std::cout << "this will work!\nSee... a new line!" << std::endl;