C++에서 부동 소수점을 문자열로 변환하는 방법

Jinku Hu 2023년10월12일
  1. 매크로 식을 사용하여 C++에서 부동 소수점을 문자열로 변환
  2. std::to_string()메서드를 사용하여 C++에서 Float를 문자열로 변환
  3. std::stringstream 클래스 및str()메서드를 사용하여 C++에서 Float를 문자열로 변환
C++에서 부동 소수점을 문자열로 변환하는 방법

이 기사에서는 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
작가: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

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

관련 문장 - C++ Float