반응형

C++ 상수를 만드는 방법

  • const : 초기값으로 literal뿐 아니라 변수도 사용 가능하다.
  • constexpr : 컴파일 시간 상수, 초기값으로 컴파일 시간에 결정된 값만 사용해야 한다. // C++11
  • 컴파일 타임 상수는 constexpr을 사용하자.
int main()
{
    int n = 10;

    const int c1 = 10;    // OK(컴파일타임 상수)
    const int c2 = n;    // OK(런타임 상수)

    constexpr int c1 = 10;    // OK(컴파일 타임 상수)
    constexpr int c2 = n;    // Error(런타임 상수는 불가)
}

 

C++ 문자열(STL string)

  • string 타입을 사용하자.(STL의 string 클래스)
    • 문자열 처리가 정수형 변수 처럼 직관적으로 사용 할 수 있다.
    • C언어의 const char*로의 변환이 필요하면 .c_str()을 사용한다.
  • C언어에서는 문자열
    • char* 또는 char 배열 사용
    • 복사 및 비교를 위해서는 문자열 전용 함수를 사용
#include <iostream>
#include <string.h>
#include <string>

int main()
{
    // C Style
    char s1[] = "hello";
    char s2[10];

    strcpy(s2, s1);
    if(strcmp(s2, s1) == 0)
    {
    }

    // C++ STL
    std::string s1 = "hello";
    std::string s2;
    
    s2 = s1; // C언어 strcpy(s2, s1) 동일
    if (s1 == s2) // C언어 strcmp(s2, s1) == 0 동일
    {
    }
    
    std::string s3 = s1 + s2;
    std::cout << s3 << std::endl;
}

 

C++ 구조체 바인딩(Structure binding) // C++17

  • 구조체 또는 배열의 각 멤버에서 값을 꺼낼때 사용
  • 타입은 반드시 auto를 사용해야 한다.

struct Point

{

int x = 10;

int y = 20;

};

 

int main()

{

Point p;

 

// 기존 Point 구조체의 멤버값을 복사

int a = p.x;

int b = p.y;

 

// Structure binding을 이용 복사(구조체)

auto [a, b] = p;

 

// Structure binding을 이용 복사(배열도 가능, 배열의 아이템 수가 일치해야 함)

int x[2] = { 1,2 };

auto[a,b] = x;

}

 

 

반응형

+ Recent posts