반응형
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;
}
반응형
'프로그래밍 언어 > C++' 카테고리의 다른 글
C++ 함수 특징 #1 (0) | 2019.05.05 |
---|---|
C++ 제어문(if, switch)과 반복문(for) (0) | 2019.01.16 |
C++ 변수의 특징(variable) #1 (0) | 2019.01.14 |
C++ 표준 입출력(Basic Input/Output) (1) | 2019.01.13 |
C++ 네임스페이스(Namespace) (0) | 2019.01.02 |