C++17 - 숫자를 문자열로 변환하는 to_chars(), 문자열에서 숫자로 변환는 from_chars()
- 로케일은 C 로케일(POSIX 로케일) 고정
- 함수 내에서 동적 메모리 할당이 없다. 즉 호출 측에서 만들어줘야 한다
- 포맷은 파라메터로 주고, 자동적으로 포맷을 해석할 수 없다
- 사용할 수 있는 포맷은 최소한
-
- 부호의 지정 불가
- 문자열 중 공백 불가
-
에 의한 소수점 이하 자릿수 지정 불가
- 소문자만 허용하고, 대문자는 사용 불가
- 16 진수에 0x를 붙일 수 없다
-
- 예외 던지기는 없다
예제 코드
#include <iostream>
#include <utility>
#include <limits>
int main()
{
{
char str[std::numeric_limits<int>::digits10 + 2] = {0}; // '-' + NULL
int input = 123456;
// 정수 input을 10진수로 문자열로 변환하고 출력
std::to_chars(std::begin(str), std::end(str), input, 10);
std::cout << str << std::endl; // 123456
}
{
const char input[] = "-123456";
int value = 0;
// 10진수 정수가 들어간 문자열을 int로 변환
std::from_chars(std::begin(input), std::end(input), value);
std::cout << value << std::endl; // -123456
}
}
이 글은 2020-05-14에 작성되었습니다.