-
사용자 정의 리터럴(literal)프로그래밍 언어/C++ 2024. 7. 23. 16:03
C++ 표준 라이브러리에는 사용자 정의 리터럴(user-defined literals)을 정의할 수 있는 기능이 존재
특정 형식의 값을 쉽게 생성할 수 있도록 도와줌
사용자 정의 리터럴의 기본 사용법
사용자 정의 리터럴을 정의하려면 operator""을 사용합니다. 예를 들어, 길이를 나타내는 meter와 kilometer 리터럴을 정의할 수 있습니다.
#include <iostream> class Length { public: explicit Length(long double value) : value_(value) {} long double getValue() const { return value_; } private: long double value_; }; Length operator"" _m(long double value) { return Length(value); } Length operator"" _km(long double value) { return Length(value * 1000); } int main() { Length distance1 = 5.0_km; Length distance2 = 300.0_m; std::cout << "Distance 1: " << distance1.getValue() << " meters" << std::endl; std::cout << "Distance 2: " << distance2.getValue() << " meters" << std::endl; return 0; }
사용자 정의 리터럴 정의 규칙
사용자 정의 리터럴은 다음 네 가지 타입을 받을 수 있습니다:
- const char* (문자열 리터럴)
- unsigned long long (정수 리터럴)
- long double (부동 소수점 리터럴)
- char (단일 문자 리터럴)
표준 라이브러리의 리터럴 네임스페이스
C++ 표준 라이브러리에는 여러 사용자 정의 리터럴이 네임스페이스로 제공됩니다. 예를 들어, 시간 리터럴은 std::chrono_literals, 문자열 리터럴은 std::string_literals 네임스페이스에 정의되어 있습니다.
#include <iostream> #include <chrono> #include <string> using namespace std::chrono_literals; using namespace std::string_literals; int main() { auto duration = 10s; auto str = "example"s; std::cout << "Duration: " << duration.count() << " seconds" << std::endl; std::cout << "String: " << str << std::endl; return 0; }
'프로그래밍 언어 > C++' 카테고리의 다른 글
싱글턴 패턴 적용 (0) 2024.08.21 std::count_if (1) 2024.07.23 std::tie (1) 2024.07.23 C++17 구조화된 바인딩(structured bindings) (0) 2024.07.23 생성자 이니셜라이저(initializer list) (0) 2024.07.23