C++에서 부동 소수점을 문자열로 변환하는 방법
- 매크로 식을 사용하여 C++에서 부동 소수점을 문자열로 변환
-
std::to_string()
메서드를 사용하여 C++에서 Float를 문자열로 변환 -
std::stringstream
클래스 및str()
메서드를 사용하여 C++에서 Float를 문자열로 변환
이 기사에서는 C++에서 float 값을 문자열로 변환하는 몇 가지 방법을 소개합니다.
매크로 식을 사용하여 C++에서 부동 소수점을 문자열로 변환
전 처리기 매크로를 사용하여 상수 부동 숫자를 문자열 값으로 변환 할 수 있습니다. 명심해야 할 한 가지는이 솔루션이 리터럴 부동 소수점 숫자 변환에만 적용된다는 것입니다. 다음 코드 예제는 스트링 화 매크로를 사용하여string
변수 생성자 문을 호출하는 방법을 보여줍니다. STRING
매크로는#
연산자를 사용하여 전달 된 인수를 문자열 상수로 변환합니다.
#include <iostream>
#include <string>
using std::cin;
using std::cout;
using std::endl;
using std::string;
#define STRING(num) #num
int main() {
string num_str(STRING(123.456));
num_str.empty() ? cout << "empty\n" : cout << num_str << endl;
return EXIT_SUCCESS;
}
출력:
123.456
부동 소수점 상수가 다른 매크로 표현식으로 정의 된 경우 다음 코드 세그먼트에 표시된대로 올바른 결과를 생성하려면 위 코드를 2 단계 매크로로 대체해야합니다.
#include <iostream>
#include <string>
using std::cin;
using std::cout;
using std::endl;
using std::string;
#define STRING(num) STR(num)
#define STR(num) #num
#define NUMBER 123.456
int main() {
string num_str(STRING(NUMBER));
num_str.empty() ? cout << "empty\n" : cout << num_str << endl;
return EXIT_SUCCESS;
}
출력:
123.456
std::to_string()
메서드를 사용하여 C++에서 Float를 문자열로 변환
to_string
함수는<string>
헤더에 정의되어 있으며 다양한 숫자 유형을string
값으로 변환 할 수 있습니다. 이 메서드는 숫자 값을 매개 변수로 사용하고std::string
값을 반환합니다. 반환 된 문자열의 유효 자릿수가 0이 될 수 있으므로to_string
은 예상치 못한 결과를 반환 할 수 있습니다.
#include <iostream>
#include <string>
using std::cin;
using std::cout;
using std::endl;
using std::string;
int main() {
float n1 = 123.456;
double n2 = 0.456;
double n3 = 1e-40;
string num_str1(std::to_string(n1));
string num_str2(std::to_string(n2));
string num_str3(std::to_string(n3));
num_str1.empty() ? cout << "empty\n" : cout << num_str1 << endl;
num_str2.empty() ? cout << "empty\n" : cout << num_str2 << endl;
num_str3.empty() ? cout << "empty\n" : cout << num_str3 << endl;
return EXIT_SUCCESS;
}
출력:
123.456001
0.456000
0.000000
std::stringstream
클래스 및str()
메서드를 사용하여 C++에서 Float를 문자열로 변환
std::stringstream
은 문자열 객체에 대한 입력/출력 작업을 수행하기위한 강력한 클래스입니다. 이 솔루션에서 단일 부동 소수점 변수를stringstream
객체에 삽입하는 데 사용합니다. 그런 다음str
내장 메서드를 호출하여 숫자 유형을string
객체로 처리합니다. 반환 된string
은 임시 객체이므로 결과에 대해 다른 메서드를 호출하면 매달린 포인터가 생성됩니다 (예제에서 주석 처리 된 줄 참조).
#include <iostream>
#include <sstream>
#include <string>
using std::cin;
using std::cout;
using std::endl;
using std::string;
int main() {
float n1 = 123.456;
std::stringstream sstream;
sstream << n1;
string num_str = sstream.str();
// auto *ptr = sstream.str().c_str(); // RESULTS in dangling pointer
num_str.empty() ? cout << "empty\n" : cout << num_str << endl;
return EXIT_SUCCESS;
}
출력:
123.456
Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.
LinkedIn Facebook