C ++ 출력 연산자로 선행 0을 인쇄 하시겠습니까?
출력을 C ++로 포맷하려면 어떻게해야합니까? 즉, printf
다음과 같은 사용에 해당하는 C ++는 무엇입니까?
printf("%05d", zipCode);
printf
C ++에서 사용할 수 있지만 출력 연산자를 선호합니다 <<
.
다음을 사용 하시겠습니까?
std::cout << "ZIP code: " << sprintf("%05d", zipCode) << std::endl;
이것은 적어도 귀하의 질문에 언급 된 우편 번호 (b) 와 같은 음수가 아닌 숫자 (a)에 대해 트릭을 수행합니다 .
#include <iostream>
#include <iomanip>
using namespace std;
cout << setw(5) << setfill('0') << zipCode << endl;
// or use this if you don't like 'using namespace std;'
std::cout << std::setw(5) << std::setfill('0') << zipCode << std::endl;
패딩을 제어하는 가장 일반적인 IO 조작기는 다음과 같습니다.
std::setw(width)
필드의 너비를 설정합니다.std::setfill(fillchar)
채우기 문자를 설정합니다.std::setiosflags(align)
정렬을 설정합니다. 여기서 align은 ios :: left 또는 ios :: right입니다.
그리고를 사용하는 것에 대한 선호도에 <<
따라 fmt
라이브러리 를 살펴볼 것을 강력히 제안합니다 . 이것은 형식을 지정하기위한 툴킷에 큰 도움이되었으며 대량의 스트림 파이프 라인보다 훨씬 좋으므로 다음과 같은 작업을 수행 할 수 있습니다.
cout << fmt::format("{:05d}", zipCode);
그리고 그것은 현재 LEWG가 C ++ 20을 목표로 삼고 있습니다. 즉, 그 시점에서 언어의 기본 부분이 될 것이라는 의미입니다.
(가) 당신이 경우에 할 음수를 처리 할 필요가, 당신은 사용할 수 있습니다 std::internal
으로 다음과 같습니다 :
cout << internal << setw(5) << setfill('0') << zipCode << endl;
이렇게 하면 부호와 크기 사이에 채우기 문자가 배치 됩니다.
(b) 이것은 ( "모든 우편 번호가 음수가 아닙니다")는 제 입장에서 가정하지만 합리적으로 안전한 가정입니다. 보증합니다 :-)
setw 및 setfill 호출을 사용하십시오 .
std::cout << std::setw(5) << std::setfill('0') << zipCode << std::endl;
cout << setw(4) << setfill('0') << n << endl;
에서:
http://www.fredosaurus.com/notes-cpp/io/omanipulators.html
또는,
char t[32];
sprintf_s(t, "%05d", 1);
OP가 이미 원하는대로 00001을 출력합니다.
참조 URL : https://stackoverflow.com/questions/530614/print-leading-zeros-with-c-output-operator
'programing' 카테고리의 다른 글
Rust에서 함수를 매개 변수로 어떻게 전달합니까? (0) | 2021.01.14 |
---|---|
ASP MVC 쿠키가 유지되지 않음 (0) | 2021.01.14 |
선택 상자 유효성 검사 (0) | 2021.01.14 |
C #에서 Google 번역 사용 (0) | 2021.01.14 |
레이아웃을 깨지 않고 CSS Div 너비 비율 및 패딩 (0) | 2021.01.14 |