C++에서 cout 의 형식 사용 에 대한 자세 한 설명

10764 단어 C++cout격식.
1.cout 와 i/i++/+i 의 조합 사용
i+++i 는 서로 다른 의 미 를 가지 고 있 으 며,cout 와 조합 하여 사용 해도 서로 다른 결 과 를 얻 을 수 있 습 니 다.다음은 코드 를 드 리 겠 습 니 다.

#include <iostream>
using namespace std;
int main(){
    int i = 1;
    cout << ++i << i++ << i << i++ << ++i << endl;
    return 0;
}
이 코드 의 결 과 는 얼마 입 니까?
A.23345
B.22335
C.54535
D.53525

우 리 는 먼저 cout 출력 컨트롤 러 의 과정 을 이해 해도 무방 하 다.아래 그림 을 보 세 요.
输出方式
표현 식 에 따 르 면 endl 은 cout 가 받 을 수 있 는 대상 으로 앞으로 전 달 됩 니 다.+i 와 endl 을 결합 하여 cout 가 받 을 수 있 는 대상 으로 앞으로 전 달 됩 니 다.순서대로 전 달 됩 니 다.물리 적 구현 에 있어 서 는 cout 가 받 을 수 있 는 대상 을 저장 할 수 있 는 스 택 이 필요 합 니 다.그리고 오른쪽 에서 왼쪽으로 이 스 택 에 넣 은 다음 순서대로 화면 에 출력 합 니 다.그 중에서 i 와+i 는 스 택 에 i 의 인용 을 저장 하고 i+는 스 택 에 숫자 를 저장 합 니 다.과정 은 다음 과 같 습 니 다.
入栈过程
첫 번 째 단계:endl 을 창고 에 넣 으 면 i 값 이 변 하지 않 습 니 다.
두 번 째 단계:i 의 인용 을 창고 에 넣 고 i 의 값 을 1 을 더 하면 2 가 됩 니 다(+i 이기 때 문 입 니 다).
세 번 째 단계:2 를 창고 에 넣 고 i 의 값 을 1 을 더 하면 3 이 됩 니 다(i++이기 때 문 입 니 다).
네 번 째 단계:i 의 인용 을 창고 에 넣 으 면 i 의 값 이 변 하지 않 습 니 다(i 이기 때 문 입 니 다).
다섯 번 째 단계:3 을 창고 에 넣 고 i 의 값 을 1 을 더 하면 4 가 됩 니 다(i++이기 때 문 입 니 다).
여섯 번 째 단계:i 의 인용 을 창고 에 넣 고 i 의 값 을 1 을 더 하면 5 가 됩 니 다(+i 이기 때 문 입 니 다).
STEP 7:스 택 에 있 는 데 이 터 를 순서대로 팝 업 하면 53525 를 얻 을 수 있 습 니 다.(i 의 값 은 5 이기 때문에 모든 i 의 인용 은 5)
2.다른 진 으로 숫자 출력
방법 1:제어 문자 dec(10 진법),hex(16 진법),oct(8 진법)를 사용 합 니 다.

#include <iostream>
using namespace std;
int main()
{
	 int chest = 42;     // decimal integer literal
    int waist = 0x42;   // hexadecimal integer literal
    int inseam = 042;   // octal integer literal
    cout << "Monsieur cuts a striking figure!
"; cout << "chest = " << chest << " (42 in decimal)
"; cout << "waist = " << waist << " (0x42 in hex)
"; cout << "inseam = " << inseam << " (042 in octal)
"; chest = 42; waist = 42; inseam = 42; cout << "Monsieur cuts a striking figure!" << endl; cout << "chest = " << chest << " (decimal for 42)" << endl; cout << hex; // manipulator for changing number base cout << "waist = " << waist << " (hexadecimal for 42)" << endl; cout << oct; // manipulator for changing number base cout << "inseam = " << inseam << " (octal for 42)" << endl; // cin.get(); // , return 0; }
실행 결과:

기본적으로 cout 는 10 진법 으로 정 수 를 표시 합 니 다.
그 중에서 oct 는 8 진 출력 이 고 dec 는 10 진(효 과 는 기본 과 같 음)이 며 hex 는 16 진 출력(알파벳 기본 은 소문 자)입 니 다.이 두 개 는 std 에 도 포함 되 어 있 습 니 다.즉,전체 명칭 은 std:oct,std:dec,std:hex 입 니 다.이 세 개의 제어 부 호 는 라 이브 러 리에 포함 되 어 있 습 니 다.
메모:기본 형식 은 10 진법 입 니 다.형식 을 수정 하기 전에 원래 의 형식 은 계속 유효 합 니 다.(변 경 될 때 까지 수 정 된 형식 이 유효 합 니 다)
방법 2:setbase 사용(n)

#include <iostream>
#include <iomanip>
using namespace std;
int main(){
	int i = 123456;
	cout << i << endl;
	cout << dec << i << endl;
	cout <<"   :" << oct << i << endl;
	cout <<"    (    ):" << hex << i << endl;
	cout << setiosflags(ios::uppercase);
	cout <<"    (    ):" << hex << i << endl;
	cout <<"   :" << setbase(8) << i << endl;
	cout <<"    :" << setbase(16) << i << endl;
}

setbase(n)는 n 진법 으로 표시 되 며,라 이브 러 리에 포함 되 어 있 으 며,n 은 8,10,16 세 개의 값 만 가 져 올 수 있 습 니 다.
setiosflags(ios:uppercase)는 알파벳 을 대문자 로 출력 하여 라 이브 러 리에 포함 시 키 는 것 을 표시 합 니 다.
이상 은 모두 std 네 임 스페이스 에 포함 되 어 있 습 니 다.
3.필드 너비 조절
width 함 수 는 길이 가 다른 숫자 를 너비 가 같은 필드 에 넣 습 니 다.이 방법 은 원형 입 니 다.
int width()
int width(int i)
첫 번 째 형식 은 필드 너비 의 현재 설정 을 되 돌려 줍 니 다.두 번 째 형식 은 필드 폭 을 i 개의 빈 칸 으로 설정 하고 이전 필드 너비 값 을 되 돌려 줍 니 다.너비 값 을 복원 할 때 사용 할 수 있 도록 이전 값 을 저장 할 수 있 습 니 다.
메모:width()방법 은 다음 항목 에 만 영향 을 주 고 필드 폭 은 기본 값 으로 복 원 됩 니 다.

#include <iostream>
using namespace std;
int main()
{
    int w = cout.width(30);
    cout << "default field width = " << w << ":
"; int a; cout.width(10); cout <<cout.width(10) <<endl; // cout.width(5); cout << "N" <<':'; cout.width(8); cout << "N * N" << ":
"; for (long i = 1; i <= 100; i *= 10) { cout.width(5); cout << i <<':'; cout.width(8); cout << i * i << ":
"; } return 0; }

출력 영역 폭 을 설정 하기 위해 setw(int n)를 사용 할 수도 있 습 니 다.

#include <iostream>
#include <iomanip>
using namespace std;
int main(){
	cout << 's' << setw(8) << 'a' << endl;			//s a   7    
	cout << 's' << setw(3) << 'abcd' << endl;
}

setw()는 그 뒤에 바짝 붙 어 있 는 출력 에 만 작용 합 니 다.예 를 들 어'a'는 모두 8 개의 위 치 를 차지 하고 부족 한 7 개의 위 치 를 빈 칸 으로 채 웁 니 다.
타 이 트 한 출력 내용 이 setw()설정 의 길 이 를 초과 하면 출력 결과 에 문제 가 있 습 니 다.
충전 문자
기본 적 인 상황 에서 cout 는 필드 에 사용 되 지 않 은 부분 을 빈 칸 으로 채 우 고 fill()구성원 함수 로 채 우 는 문 자 를 바 꿀 수 있 습 니 다.
제어 부 호 는 라 이브 러 리,std 네 임 스페이스 에 포함 되 어 있 습 니 다.

#include <iostream>
using namespace std;
int main()
{
    cout.fill('*');
    const char * staff[2] = { "Waldo Whipsnade", "Wilmarie Wooper"};
    long bonus[2] = {900, 1350};
 
    for (int i = 0; i < 2; i++)
    {
        cout << staff[i] << ": $";
        cout.width(7);
        cout << bonus[i] << "
"; } return 0; }

메모:필드 너비 와 달리 새로운 충전 문 자 는 변경 할 때 까지 유효 합 니 다.
4.부동 소수점 표시 정밀도 설정
방법 1:
C++의 기본 정밀 도 는 6 자리 입 니 다.(단,끝의 0 은 표시 되 지 않 습 니 다.)precision()구성원 함 수 는 다른 값 을 선택 할 수 있 습 니 다.fill 과 유사 합 니 다.새로운 정밀도 설정 은 재 설정 될 때 까지 유효 합 니 다.

#include <iostream>
using namespace std;
int main()
{
    float price1 = 20.40;
    float price2 = 1.9 + 8.0 / 9.0;
 
    cout << "\"Furry Friends\" is $" << price1 << "!
"; cout << "\"Fiery Fiends\" is $" << price2 << "!
"; cout.precision(2); cout << "\"Furry Friends\" is $" << price1 << "!
"; cout << "\"Fiery Fiends\" is $" << price2 << "!
"; return 0; }

방법 2:
전제:라 이브 러 리을 포함 합 니 다.이 라 이브 러 리 는 입 출력 에 대한 제 어 를 포함 합 니 다.

#include <iostream>
#include <iomanip>
using namespace std;
int main(){
	double i = 3333.1415926;
	cout << i << endl;
	cout << setprecision(3) << i << endl;
	cout << setprecision(9) << i << endl;
	cout << setiosflags(ios::fixed);
	cout << i << endl;
	cout << fixed << setprecision(3) << i << endl;
	cout << setprecision(9) << fixed <<  i << endl;
}

이 를 통 해 알 수 있 듯 이 C+기본 부동 소수점 출력 유효 자릿수 는 6 비트(앞의 정수 자릿수 가 6 비트 이상 이면 과학 계수 법 으로 출력)이 고 다음 과 같은 몇 가지 방식 으로 출력 정 도 를 변경 할 수 있다.
1.setprecision(n)을 사용 하면 부동 소수점 출력 의 유효 자릿수 를 설정 할 수 있 습 니 다.
(앞의 정수 자리 수가 n 자리 보다 크 면 과학 계수 법 으로 출력)
2.setiosflags(ios:fixed)또는 fixed 를 사용 하여 소수점 뒤의 숫자의 출력 정 도 를 제어 합 니 다.
따라서 setprecision(n)과 결합 하여 사용 하면 부동 소수점 소수점 뒤의 숫자의 출력 정 도 를 설정 할 수 있 고 자릿수 가 부족 한 보충 0 을 설정 할 수 있 습 니 다.
이상 은 모두'반올림'의 방법 으로 정 도 를 제어 하고 세 개의 제어 부 호 는 모두 std 네 임 스페이스 에 포함 된다.
인쇄 끝의 0 과 소수

#include <iostream>
using namespace std;
int main()
{
    float price1 = 20.40;
    float price2 = 1.9 + 8.0 / 9.0;
 
    cout.setf(ios_base::showpoint);
    cout << "\"Furry Friends\" is $" << price1 << "!
"; cout << "\"Fiery Fiends\" is $" << price2 << "!
"; cout.precision(2); cout << "\"Furry Friends\" is $" << price1 << "!
"; cout << "\"Fiery Fiends\" is $" << price2 << "!
"; // std::cin.get(); return 0; }


이상 은 C++에서 cout 의 형식 에 사용 되 는 상세 한 내용 입 니 다.더 많은 C+cout 형식 에 관 한 자 료 는 저희 의 다른 관련 글 을 주목 해 주 십시오!

좋은 웹페이지 즐겨찾기