삽입 연산자를 사용 하 여 형식 제어
이 항목에서는 사용자 클래스에 대 한 삽입 연산자를 만드는 방법 및 형식을 제어 하는 방법을 보여 줍니다.삽입 (<<) 모든 표준 C++ 데이터 형식에 대 한 preprogrammed입니다, 연산자를 출력 스트림 개체에 바이트를 보냅니다."기본 형식 integer 인수를 변경 하는 요소는 미리 정의 된 manipulators를," 삽입 연산자를 작동 합니다.
형식에서 다음 옵션을 제어할 수 있습니다.
출력 폭
맞춤
전체 자릿수
기 수
출력 폭
출력을 정렬 하려면 각 항목에 대 한 출력 너비를 배치 하 여 지정은 setw manipulator를 호출 하 여 스트림을 또는 폭 멤버 함수입니다.값 열에는 적어도 10 문자 너비는 오른쪽 맞춤 하는이 예제:
// output_width.cpp
// compile with: /EHsc
#include <iostream>
using namespace std;
int main( )
{
double values[] = { 1.23, 35.36, 653.7, 4358.24 };
for( int i = 0; i < 4; i++ )
{
cout.width(10);
cout << values[i] << '\n';
}
}
Output
1.23
35.36
653.7
4358.24
선행 공백 10 문자 너비 값으로 추가 됩니다.
필드를 채울 수는 칠 안쪽 여백 문자 폭이 지정 된 필드의 값을 설정 하는 멤버 함수입니다.기본값은 공백입니다.별표 열에 채울 수 있는 이전 수정 에 대 한 루프는 다음과 같이 하십시오.
for( int i = 0; i < 4; i++ )
{
cout.width( 10 );
cout.fill( '*' );
cout << values[i] << endl;
}
endl Manipulator 대체 줄 바꿈 문자 ('\n').출력은 다음과 같습니다.
******1.23
*****35.36
*****653.7
***4358.24
같은 줄에서 데이터 요소에 대 한 너비를 지정 하려면 사용 하는 setw manipulator:
// setw.cpp
// compile with: /EHsc
#include <iostream>
#include <iomanip>
using namespace std;
int main( )
{
double values[] = { 1.23, 35.36, 653.7, 4358.24 };
char *names[] = { "Zoot", "Jimmy", "Al", "Stan" };
for( int i = 0; i < 4; i++ )
cout << setw( 6 ) << names[i]
<< setw( 10 ) << values[i] << endl;
}
Output
폭 <iostream>의 멤버 함수를 선언 합니다.사용 하는 경우 setw 또는 다른 manipulator 인수와 함께 <iomanip>를 포함 해야 합니다.출력에서 문자열의 6 너비 필드 및 정수 필드 너비 10의 인쇄 됩니다.
Zoot 1.23
Jimmy 35.36
Al 653.7
Stan 4358.24
둘 다 setw 또는 폭 값이 잘립니다.출력 서식을 지정 하는 경우 스트림의 정밀도 설정에 따라 전체 값 출력, 너비를 초과 합니다.둘 다 setw 및 폭 다음 필드에만 영향을 합니다.필드 너비 (필요한 너비) 해당 기본 동작으로 되돌아갑니다 필드가 인쇄 된 후.그러나 다른 스트림 형식 옵션 변경 때까지 적용 됩니다.
맞춤
오른쪽에 맞춰진 텍스트를 기본을 출력에 스트리밍합니다.위 예제에서 이름 왼쪽에 정렬 및 숫자 오른쪽 맞춤 하려면 대체는 에 대 한 루프는 다음과 같이:
for ( int i = 0; i < 4; i++ )
cout << setiosflags( ios::left )
<< setw( 6 ) << names[i]
<< resetiosflags( ios::left )
<< setw( 10 ) << values[i] << endl;
출력은 다음과 같습니다.
Zoot 1.23
Jimmy 35.36
Al 653.7
Stan 4358.24
Left-align 플래그를 사용 하 여 설정 된는 setiosflags manipulator와의 왼쪽 열거자입니다.이 열거자 정의 ios 해당 참조를 포함 해야 하므로 클래스는 ios:: 접두사.Resetiosflags manipulator left-align 플래그를 설정 합니다.달리 폭 및 setw, 효과를 setiosflags 및 resetiosflags 는 영구적입니다.
전체 자릿수
부동 소수점 정밀도 기본값은 6입니다.예를 들어, 숫자 3466.9768 3466.98로 인쇄합니다.이 값을 인쇄 하는 방법을 변경할 수 있는 setprecision manipulator.두 플래그는 manipulator 있습니다: 수정 및 과학.경우 수정 설정 되어 3466.976800로 숫자 인쇄 합니다.경우 과학 3.4669773 + 003으로 인쇄 설정 되어 있습니다.
표시 되는 부동 소수점 숫자를 표시 하려면 맞춤 바꾸기 유효 숫자가 하나는 에 대 한 루프는 다음과 같이:
for ( int i = 0; i < 4; i++ )
cout << setiosflags( ios::left )
<< setw( 6 )
<< names[i]
<< resetiosflags( ios::left )
<< setw( 10 )
<< setprecision( 1 )
<< values[i]
<< endl;
이 목록을 인쇄 하는 프로그램입니다.
Zoot 1
Jimmy 4e+001
Al 7e+002
Stan 4e+003
이 문 앞 지 수 표기를 제거 하려면 삽입은 에 대 한 루프.
cout << setiosflags( ios::fixed );
고정 된 표기법을 프로그램 한 자릿수를 소수점 뒤 인쇄합니다.
Zoot 1.2
Jimmy 35.4
Al 653.7
Stan 4358.2
변경 하는 경우는 ios::fixed 플래그 ios::scientific,이 프로그램을 인쇄:
Zoot 1.2e+000
Jimmy 3.5e+001
Al 6.5e+002
Stan 4.4e+003
다시 프로그램 소수점 한 자리 수를 인쇄합니다.두 경우 ios::fixed 또는 ios::scientific 정밀도 값은 소수점 자릿수 결정 설정 되어 있습니다.두 플래그를 설정 하면 총 유효 자릿수 정밀도 값을 결정 합니다.resetiosflags Manipulator 이러한 플래그를 지웁니다.
기 수
12 월, 10 월, 및 16 진수 manipulators 입력 및 출력에 대 한 기본 기 수를 설정 합니다.예를 들어, 사용자가 삽입 하는 경우는 16 진수 manipulator 출력 스트림으로 개체의 내부 데이터 표현을 정수 16 진수 출력 형식으로 올바르게로 변환 합니다.숫자는 숫자와 a부터 f 소문자로 표시는 대 플래그가 선택이 해제 (기본값). 그렇지 않으면 대문자로 표시 됩니다.기본 기 수 있습니다 12 월 (10 진수)입니다.