C++프로 그래 밍 의 포맷 출력 상세 설명

6192 단어 C++포맷 출력
데 이 터 를 출력 할 때 간편 하 게 보기 위해 출력 형식 을 지정 하지 않 고 시스템 에서 데이터 형식 에 따라 기본 형식 을 사용 하지만,16 진법 이나 8 진법 으로 정 수 를 출력 하고,출력 소수 에 대해 서 는 두 개의 소수 만 유지 하 기 를 원 하 는 경우 도 있다.이 목적 을 달성 할 수 있 는 두 가지 방법 이 있다.하 나 는 제어 부 를 사용 하 는 방법 이다.두 번 째 는 스 트림 대상 을 사용 하 는 구성원 함수 입 니 다.각각 다음 과 같이 서술 하 다.
제어 문자 로 출력 형식 제어 하기
제어 형식의 사용 방법 은 여기 서 더 이상 군말 하지 않 고 예 를 들 어 설명 할 뿐이다.
[예]출력 형식 을 제어 문자 로 제어 합 니 다.

#include <iostream>
#include <iomanip>//          
using namespace std;
int main()
{
  int a;
  cout<<"input a:";
  cin>>a;
  cout<<"dec:"<<dec<<a<<endl; //          
  cout<<"hex:"<<hex<<a<<endl; //           a
  cout<<"oct:"<<setbase(8)<<a<<endl; //          a
  char *pt="China"; //pt     "China"
  cout<<setw(10)<<pt<<endl; //     ,     
  cout<<setfill('*')<<setw(10)<<pt<<endl; //    ,     ,    '*'  
  double pi=22.0/7.0; //  pi 
  //       ,8   
  cout<<setiosflags(ios::scientific)<<setprecision(8);
  cout<<"pi="<<pi<<endl; //  pi 
  cout<<"pi="<<setprecision(4)<<pi<<endl; //     
  cout<<"pi="<<setiosflags(ios::fixed)<<pi<<endl; //        
  return 0;
}
실행 결 과 는 다음 과 같 습 니 다.

input a:34L(  a  )
dec:34          (     )
hex:22          (      )
oct:42          (     )
     China        (   )
*****China        (   ,    '*'  )
pi=3.14285714e+00    (      ,8   )
pi=3.1429e+00      (      ,4   )
pi=3.143         (      ,    )
스 트림 대상 의 구성원 함수 로 출력 형식 을 제어 합 니 다.
출력 형식 을 제어 문자 로 제어 할 수 있 는 것 외 에 스 트림 대상 cout 에서 출력 형식 을 제어 하 는 구성원 함수 로 출력 형식 을 제어 할 수 있 습 니 다.출력 형식 을 제어 하 는 데 자주 사용 되 는 구성원 함수 표 참조

스 트림 구성원 함수 setf 와 제어 문자 setiosflags 괄호 의 매개 변 수 는 형식 상 태 를 표시 합 니 다.형식 표 지 를 통 해 지정 합 니 다.형식 플래그 는 클래스 ios 에서 매 거 진 값 으로 정의 되 었 습 니 다.따라서 이 형식 표 지 를 인용 할 때 앞 에 클래스 이름 ios 와 도 메 인 연산 자":"를 추가 해 야 합 니 다.양식 표지 아래 표 참조

[예]스 트림 으로 구성원 함수 로 데 이 터 를 출력 합 니 다.

#include <iostream>
using namespace std;
int main( )
{
  int a=21
  cout.setf(ios::showbase);//      (0x )
  cout<<"dec:"<<a<<endl;     //          a
  cout.unsetf(ios::dec);     //          
  cout.setf(ios::hex);      //            
  cout<<"hex:"<<a<<endl;     //         a
  cout.unsetf(ios::hex);     //           
  cout.setf(ios::oct);      //           
  cout<<"oct:"<<a<<endl;     //        a
  cout.unseft(ios::oct);
  char *pt="China";       //pt     "China"
  cout.width(10);        //     
  cout<<pt<<endl;        //     
  cout.width(10);        //     
  cout.fill('*');        //      '*'  
  cout<<pt<<endl;        //     
  double pi=22.0/7.0;      //  pi 
  cout.setf(ios::scientific);  //          
  cout<<"pi=";          //  "pi="
  cout.width(14);        //     
  cout<<pi<<endl;        //  pi 
  cout.unsetf(ios::scientific); //         
  cout.setf(ios::fixed);    //         
  cout.width(12);        //     
  cout.setf(ios::showpos);   //    “+” 
  cout.setf(ios::internal);   //       
  cout.precision(6);      //     
  cout<<pi<<endl;        //  pi,    “+”   
  return 0;
}
운행 상황 은 다음 과 같다.

dec:21(     )
hex:0x15         (      , x  )
oct:025         (     ,   )
     China        (   )
*****China        (   ,    '*'  )
pi=**3.142857e+00    (      ,  ,     )
+***3.142857       (      ,   ,       “+”)
프로그램 에 대한 몇 가지 설명:
1)구성원 함수 width(n)와 제어 문자 setw(n)는 그 후의 첫 번 째 출력 항목 에 만 유효 합 니 다.예:

  cout. width(6);
  cout <<20 <<3.14<<endl;
출력 결 과 는 203.14 입 니 다.
첫 번 째 출력 항목 20 을 출력 할 때 도 메 인 폭 은 6 이 므 로 20 앞 에 4 개의 빈 칸 이 있 습 니 다.출력 3.14 시 width(6)는 작 동 하지 않 습 니 다.이 때 시스템 의 기본 도 메 인 폭 으로 출력 합 니 다(데이터 실제 길이 로 출력 합 니 다).데 이 터 를 출력 할 때 지정 한 도 메 인 너비 n 으로 출력 하 라 고 요구 하면 width(n)만 호출 할 수 없고 출력 항목 마다 width(n>을 호출 해 야 합 니 다.위의 프로그램 에 서 는 이렇게 해 야 합 니 다.
2)표 의 출력 형식 상 태 는 5 세트 로 나 뉘 는데 각 그룹 에서 한 가지 만 선택 할 수 있 습 니 다(예 를 들 어 dec,hex,oct 에서 하나만 선택 할 수 있 습 니 다.서로 배척 합 니 다).구성원 함수 setf 와 제어 문자 setiosflags 로 출력 형식 상 태 를 설정 한 후 같은 그룹의 다른 상태 로 설정 하려 면 구성원 함수 unsetf(구성원 함수 self 에 대응)나 resetiosflags(제어 문자 setiosflags 에 대응)를 호출 하여 원래 설 치 된 상 태 를 종료 해 야 합 니 다.그리고 다른 상 태 를 설정 하면 이 프로그램 에서 이 점 을 볼 수 있 습 니 다.프로그램 이 시작 되 었 을 때 구성원 함수 self 와 제어 문자 setiosflags 를 사용 하지 않 았 지만 시스템 은 기본적으로 dec 로 지정 되 었 기 때문에 hex 나 oct 로 변경 하려 면 unsetf 함수 로 원래 설정 을 종료 해 야 합 니 다.프로그램의 7 줄 과 10 줄 을 삭제 하면 8 줄 과 11 줄 에서 구성원 함수 setf 로 hex 와 oct 형식 을 설정 하 였 으 나 dec 형식 이 종료 되 지 않 았 기 때문에 hex 와 oct 의 설정 은 모두 작용 하지 않 고 시스템 은 여전히 10 진법 으로 출력 합 니 다.
마찬가지 로 프로그램 마지막 8 줄 의 unsetf 함수 호출 도 없어 서 는 안 된다.
3)setf 함수 로 형식 상 태 를 설정 할 때 두 개 이상 의 형식 표 지 를 포함 할 수 있 습 니 다.이 형식 표 지 는 ios 류 에서 매 거 진 값 으로 정의 되 기 때문에 모든 형식 표 지 는 하나의 이 진 으로 대표 되 기 때문에 비트 나 연산 자'|'로 여러 형식 표 지 를 조합 할 수 있 습 니 다.마지막 5,6 번 째 줄 은 다음 줄 로 대체 할 수 있 습 니 다.
    cout.setf(ios::internal I ios::showpos);  //두 개의 상태 표 지 를 포함 하여"|"로 조합 합 니 다.
4)볼 수 있 습 니 다.출력 형식 에 대한 통 제 는 제어 문자 도 사용 할 수 있 고 cout 흐름 과 관련 된 구성원 함수 도 사용 할 수 있 습 니 다.이들 의 역할 은 같 습 니 다.제어 부 호 는 헤더 파일 iomanip 에서 정의 되 기 때문에 제어 부 호 를 사용 할 때 iomanip 헤더 파일 을 포함해 야 합 니 다.cout 흐름 의 구성원 함 수 는 헤더 파일 iostream 에서 정의 되 기 때문에 헤더 파일 iostream 만 포함 하고 iomanip 을 포함 하지 않 아 도 됩 니 다.많은 프로그램 직원 들 이 제어 부 호 를 사용 하 는 것 이 편리 하고 간단 하 며,하나의 cout 출력 문 에서 여러 가지 제어 부 호 를 연속 으로 사용 할 수 있다 고 느 꼈 다.

좋은 웹페이지 즐겨찾기