[기술 질문] #10_실수형의 문자열 변환
실수형(float, double)의 문자열 변환에 대해 알아보겠습니다.
Overview
- 매크로
- std::to_string 함수
- std::stringstream 객체 + str 함수
#0. 매크로
1. 매크로 식
#include <iostream>
#include <string>
using namespace std;
#define STRING(num) #num
int main()
{
string float_str(STRING(123.456));
cout << float_str << endl;
return;
}
Details
- 전 처리기 매크로를 사용하여 부동 숫자를 문자열로 변환할 수 있습니다.
- 해당 방법은 리터럴 부동 소수점 숫자의 문자열 변환에만 사용할 수 있습니다!
#1. std::to_string 함수
1. to_string 함수
#include <iostream>
#include <string>
using namespace std;
int main()
{
float num = 123.456;
string num_str = to_string(num);
cout << num_str << endl;
return;
}
Details
- <string> 헤더에 정의된 "to_string" 메서드는 다양한 숫자 데이터 타입을 "string"타입으로 변환합니다.
- 반환된 문자열의 유효 자릿수가 0이 될 수 있으므로, 정확한 결과 값을 반환하지 못할 수 있습니다.
#2. std::stringstream 객체 + str 함수
1. stringstream 객체
#include <iostream>
#include <string>
#include <sstream>
using namespace std;
int main()
{
float num = 123.456f;
// stringstream 객체 선언
stringstream sstream;
// float 삽입
sstream << num;
// str() 호출
string num_str = sstream.str();
cout << num_str << endl;
return;
}
Details
- 먼저, stringstream 객체를 선언합니다.
- "<<"를 통해 stringstream 객체에 float형 변수를 삽입합니다.
- "str()" 내장 함수를 호출해 문자열을 반환합니다.
- 위 방법은 실수형의 소수점 밑 3자리 까지만 표현 가능하며, 그 이상의 범위를 표현하기 위해선 fixed와 precision을 활용해야 합니다.
1. stringstream + fixed + precision
#include <iostream>
#include <sstream>
using namespace std;
int main()
{
float num = 123.42457f;
stringstream sstream;
sstream.precision(6);
sstream << fixed;
sstream << num;
cout << sstream.str();
return 0;
}
Details
- 먼저, stringstream 객체를 선언합니다.
- prection 함수를 통해 sstream 객체의 표현 범위를 결정합니다.
- fixed 를 통해 sstream 객체의 precision(정밀도)를 실수의 전체 범위에서 소수점 아래 범위로 변경해줍니다.
- str 함수를 통해 실수형을 문자열로 변환해 출력합니다.
'언어 > 기술 질문' 카테고리의 다른 글
[기술 질문]#12_함수 포인터, Function Pointer (0) | 2023.02.22 |
---|---|
[기술 질문]#11_허상 포인터(Dangling Pointer) (2) | 2023.02.18 |
[기술 질문]#9_부동 소수점, float (0) | 2023.02.18 |
[기술 질문]#9_객체 지향 프로그래밍(OOP) (0) | 2023.02.12 |
[기술 질문]#6_동적 할당 (0) | 2023.01.27 |