2010-12-08 1 views
5

"cout"으로 인쇄 된 텍스트를 변경할 수 있습니까? 각 비율에 대해 새 줄을 입력하지 않고도 현재 비율을 보여주고 싶습니다. 이것이 가능한가?C++ "cout"에서 출력 변경

+0

대부분의 터미널이 캐리지 리턴 문자를 기쁜 마음으로 해석 할지라도, cout은 콘솔의 추상화로 간주되지 않습니다. – lijie

+0

다음 콘솔 무엇입니까? – nebkat

+0

당신은 당신의 질문을 명확히 할 필요가 있습니다. 당신이 달성하고자하는 것과 변화가 무엇을 의미하는지 명확하지 않습니다. –

답변

11

이 나를 위해 작동합니다

std::cout << "1111"; 
std::cout << "\r"; 
std::cout << "2222"; 

\r은 캐리지 리턴 상징이다. "커서"를 줄의 처음으로 되돌립니다.

또는 \b 문자를 사용할 수 있습니다. 이것은 백 스페이스입니다. 인쇄되면 한 문자 뒤로갑니다.

+0

당신이 실제로 필요로하는 것보다 3'\ r' (캐리지 리턴)을 더 가지고있다. (당신이'\ b', 백 스페이스를 의미하지 않는다면) – Hasturkun

+0

고마워, 나는 이미 그것을 편집했다. – detunized

+0

적절한 줄 끝 기호는 "\ r"이 아니라 "\ n"입니다. 표준 라이브러리는 "\ n"을 CR-LF, LF-CR 또는 사용자 플랫폼에 적합한 것으로 해석합니다. std :: endl도 있는데, 이는 버퍼의 플러시를 추가로 강제 실행합니다. –

1

일반적으로 불가능합니다. (cout의 출력이 프린터에 직접 공급된다고 가정하면 마지막 줄의 "인쇄를 취소 하시겠습니까?") 어떻게 출력합니까? 출력은 어떤 출력을위한 매체인지, 또는 출력에 대한 가정이 없습니다. 그 매체의 능력. 특정 트릭은 어떤 경우에는 원하는 것을 성취 할 수 있지만 다른 사람들에게는 끔찍하게 실패 할 수 있습니다. 평범한 텍스트를 직접 출력하는 것보다 더 역동적 인 것을 원한다면 아마도 cout은 올바른 도구가 아닙니다.

0

확실히 당신이 cout에서 얻지 못할 것은 터미널 선 길이입니다. 이것은 변경 될 수 있기 때문에 ('\ r'을 사용하는) 너무 긴 행을 사용하면 매번 갱신 할 때마다 새로운 행이 인쇄됩니다. 특정 플랫폼을 사용하려면 플랫폼 특정 기능을 사용하여 터미널 크기를 얻습니다 (모든 터미널에 연결되지 않을 수도 있음을 염두에 두십시오 (예 : 파일로 리디렉션 됨).