본문 바로가기
카테고리 없음

C++ 기본 개념 2

by m_mOn 2023. 6. 13.

C++ 기본 개념들에 대해 더 자세한 내용을 설명하겠습니다.

 

C++ 기본 개념 2

❑ Underflow/overflow

❑ Formatting output -Stream Manipulators

❑ Reading Characters and string Objects (cin vs getline)


Underflow/Overflow

 

Underflow와 Overflow는 숫자 데이터 유형에서 범위를 벗어나는 경우 발생하는 현상입니다.

 

Underflow: Underflow는 양수 데이터 유형에서 최솟값보다 작은 값을 표현하려고 할 때 발생합니다. 이 경우, 데이터 유형의 최솟값으로 wrapping되어 예상치 못한 동작을 일으킬 수 있습니다.
Overflow: Overflow는 양수 데이터 유형에서 최댓값보다 큰 값을 표현하려고 할 때 발생합니다. 이 경우, 데이터 유형의 최댓값으로 wrapping되어 예상치 못한 동작을 일으킬 수 있습니다.

예를 들어, signed char 유형에서 -128부터 127까지의 값을 표현할 수 있습니다. 따라서 -128보다 작은 값이 할당되면 Underflow가 발생하고, 127보다 큰 값이 할당되면 Overflow가 발생합니다. 이러한 상황은 데이터의 올바른 처리와 프로그램의 안전성을 고려할 때 주의해야 합니다.

 


Formatting Output - Stream Manipulators:

 

출력 형식을 지정하기 위해 Stream Manipulators(스트림 조작자)를 사용할 수 있습니다. 

이는 출력 스트림(std::cout)에 영향을 주는 특별한 제어 기호입니다.

 

std::endl: 새로운 줄을 삽입하고 출력 버퍼를 플러시하여 줄 바꿈을 수행합니다.
std::setw(n): 필드 폭을 n으로 설정하여 출력을 정렬할 수 있습니다.
std::setprecision(n): 실수를 출력할 때 소수점 이하 n자리까지 표시할 수 있습니다.
std::fixed: 고정 소수점 표기법으로 실수를 출력합니다.

 

예를 들어, 다음은 setw와 setprecision을 사용하여 출력을 형식화하는 예입니다:
#include <iostream>
#include <iomanip>

int main() {
    double value = 3.14159;
    std::cout << std::fixed << std::setprecision(2) << value << std::endl;

    return 0;
}

 

이 예제에서는 value를 소수점 이하 2자리까지 출력합니다. 출력 결과는 "3.14"입니다.

 

Reading Characters and String Objects (cin vs getline)


C++에서 문자와 문자열을 입력받을 때 cin과 getline 함수를 사용할 수 있습니다.
cin: cin은 표준 입력으로부터 공백을 포함하지 않는 단어나 문자를 읽습니다. 

공백이나 개행 문자를 만나면 입력이 종료됩니다.

#include <iostream>
#include <string>

int main() {
    std::string name;
    std::cout << "이름을 입력하세요: ";
    std::cin >> name;
    std::cout << "안녕하세요, " << name << "님!" << std::endl;

    return 0;
}


이 예제에서는 사용자로부터 이름을 입력받아 출력합니다. cin은 공백을 포함하지 않는 문자열을 읽고, name 변수에 저장합니다.

getline: getline 함수는 표준 입력으로부터 한 줄 전체를 읽습니다. 개행 문자를 만나기 전까지 입력을 받습니다.

#include <iostream>
#include <string>

int main() {
    std::string sentence;
    std::cout << "문장을 입력하세요: ";
    std::getline(std::cin, sentence);
    std::cout << "입력한 문장: " << sentence << std::endl;

    return 0;
}


이 예제에서는 사용자로부터 한 줄의 문장을 입력받아 출력합니다. getline 함수는 개행 문자를 만날 때까지 입력을 받고, sentence 변수에 저장합니다.

cin과 getline은 입력을 다르게 처리하므로 상황에 맞게 적절한 함수를 선택해야 합니다. cin은 공백이 없는 간단한 입력을 처리하는데 유용하며, getline은 공백이 포함된 한 줄 전체를 입력받을 때 유용합니다.