Program Language/C & C++

[C++] Console 한 줄 Refresh

야곰야곰+책벌레 2022. 2. 16. 16:49
728x90
반응형

C++에서 기본적으로 제공하는 Console에서 한 줄만 지우는 것은 불가능한 것 같다. Console 전체 지우기는 제공하나 한 줄 지우기는 존재하지 않는다. 그래서 '\r'을 이용하여 공백 문자를 채워 넣어서 지우고 다시 써보았다.

공백 문자를 채워서 한 번에 print를 하는 방법도 있을 것 같다.

 

#include <thread>
#include <chrono>
#include <iostream>
using namespace std;

char buffering_char[4] = { '-', '\\', '|', '/' };

int main()
{
	for (int i = 0; i < 3; i++)
	{
		std::chrono::system_clock::time_point start = std::chrono::system_clock::now();

		int count = 0;
		string str_out{ "running ..." };

		while (count < 10)
		{
			std::chrono::duration<double> sec = std::chrono::system_clock::now() - start;

			if (count != static_cast<int>(10 * sec.count()))
			{
				cout << "[" << buffering_char[count % 4] << "] " << str_out.c_str() << "\r";
				count = 10 * sec.count();
				str_out += ".";
			}
		}

		for (int i = 0; i < str_out.size() + 3; i++)
			cout << " ";
		cout << "\r";
		cout << "done!" << endl;
	}

	return 0;
}
728x90
반응형

'Program Language > C & C++' 카테고리의 다른 글

[C++] Template Aliases  (0) 2022.02.18
[C++] Function Template  (0) 2022.02.17
[C++] Class Template  (0) 2022.02.10
[C++] Simple String 템플릿  (0) 2022.02.10
[C++] std::chrono로 시간 측정하기  (0) 2022.01.21