Как из float сделать string c
Перейти к содержимому

Как из float сделать string c

Convert float to string in C++ (3 Ways)

In this article, we will learn about three different ways to convert a float to a string in C++ i.e.

  1. Using std::to_string() function
  2. Using std::stingstream
  3. Using Boost’s lexical_cast() function.

Let’s discuss them one by one.

Convert float to string using to_string()

C++ provides a function std::to_string() for data type conversion. We can use this to convert a float to a string. For example,

We passed a float value to the to_string() function, and it converted the given float to a string and returned the string object. It will keep the precision level as it is. If you want more control over the precision level of float while converting it to string, then look at the following technique using stringstream.

Convert float to string with specified precision using stringstream in C++

C++ provides a class stringstream, which provides a stream-like functionality. We can insert different types of elements in stringstream and get a final string object from the stream. We can use that to convert float to string. In the stream, we can also set the precision level of float-type elements before conversion. Check out this example,

Output:

In the stringstream, we inserted a float to the stringstream, and then the stream converted the float to string. Also, as we set the precision level to 3, it rounded off the value to keep only three digits after the dot.

Convert float to string using boost::lexical_cast()

The C++ boost library, provides a template function for data type conversion. It helps to convert elements from one data type to another. We can use that to convert a float to string. For example,

Output:

Summary:

We learned about three different ways to convert a float value to a string in C++.

Do you want to Learn Modern C++ from best?

We have curated a list of Best C++ Courses, that will teach you the cutting edge Modern C++ from the absolute beginning to advanced level. It will also introduce to you the word of Smart Pointers, Move semantics, Rvalue, Lambda function, auto, Variadic template, range based for loops, Multi-threading and many other latest features of C++ i.e. from C++11 to C++20.

Check Detailed Reviews of Best Modern C++ Courses

Remember, C++ requires a lot of patience, persistence, and practice. So, start learning today.

Convert a floating point number to string in C

Write a C function ftoa() that converts a given floating-point number or a double to a string. Use of standard library functions for direct conversion is not allowed. The following is prototype of ftoa(). The article provides insight of conversion of C double to string.

Example:

  • ftoa(1.555, str, 2) should store “1.55” in res.
  • ftoa(1.555, str, 0) should store “1” in res.


We strongly recommend to minimize the browser and try this yourself first.

A simple way is to use sprintf(), but use of standard library functions for direct conversion is not allowed.

Approach: The idea is to separate integral and fractional parts and convert them to strings separately. Following are the detailed steps.

Convert. To String Метод

Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.

Преобразует указанное значение в его эквивалентное строковое представление.

Перегрузки

Преобразует значение заданного 32-битового целого числа со знаком в эквивалентное строковое представление в указанной системе счисления.

Преобразует значение заданного десятичного числа в эквивалентное строковое представление, используя указанные сведения об особенностях форматирования, связанных с языком и региональными параметрами.

Преобразует значение заданного числа с плавающей запятой двойной точности в эквивалентное строковое представление.

Преобразует значение заданного 16-битового целого числа со знаком в эквивалентное строковое представление, учитывая указанные сведения об особенностях форматирования, связанных с языком и региональными параметрами.

Преобразует значение заданного 16-битового целого числа со знаком в эквивалентное строковое представление в указанной системе счисления.

Преобразует значение заданного 32-битового целого числа со знаком в эквивалентное строковое представление, учитывая указанные сведения об особенностях форматирования, связанных с языком и региональными параметрами.

Преобразует значение заданного 64-битового целого числа со знаком в эквивалентное строковое представление, учитывая указанные сведения об особенностях форматирования, связанных с языком и региональными параметрами.

Преобразует значение заданного 64-битового целого числа без знака в эквивалентное строковое представление.

Преобразует значение указанного объекта в эквивалентное строковое представление с использованием указанных сведений об особенностях форматирования для данного языка и региональных параметров.

Преобразует значение заданного 8-битового целого числа со знаком в эквивалентное строковое представление, учитывая указанные сведения об особенностях форматирования, связанных с языком и региональными параметрами.

Преобразует значение заданного числа с плавающей запятой одиночной точности в эквивалентное строковое представление, используя указанные сведения об особенностях форматирования, связанных с языком и региональными параметрами.

Возвращает заданное строковое представление; фактическое преобразование не производится.

Преобразует значение заданного 16-битового целого числа без знака в эквивалентное строковое представление, учитывая указанные сведения об особенностях форматирования, связанных с языком и региональными параметрами.

Преобразует значение заданного 32-битового целого числа без знака в эквивалентное строковое представление, учитывая указанные сведения об особенностях форматирования, связанных с языком и региональными параметрами.

Преобразует значение заданного 64-битового целого числа без знака в эквивалентное строковое представление, учитывая указанные сведения об особенностях форматирования, связанных с языком и региональными параметрами.

Преобразует значение заданного объекта DateTime в эквивалентное строковое представление с использованием указанных сведений об особенностях форматирования для данного языка и региональных параметров.

Преобразует значение заданного 64-битового целого числа со знаком в эквивалентное строковое представление в указанной системе счисления.

Преобразует значение заданного знака Юникода в эквивалентное строковое представление, используя указанные сведения об особенностях форматирования, связанных с языком и региональными параметрами.

Преобразует значение заданного 32-битового целого числа без знака в эквивалентное строковое представление.

Преобразует значение заданного 8-битового целого числа без знака в эквивалентное строковое представление, учитывая указанные сведения об особенностях форматирования, связанных с языком и региональными параметрами.

Преобразует указанное логическое значение в эквивалентное строковое представление.

Преобразует значение заданного 8-битового целого числа без знака в эквивалентное строковое представление.

Преобразует значение заданного знака Юникода в эквивалентное строковое представление.

Преобразует значение заданного объекта DateTime в эквивалентное строковое представление.

Преобразует значение заданного числа с плавающей запятой двойной точности в эквивалентное строковое представление.

Преобразует значение заданного 16-битового целого числа со знаком в эквивалентное строковое представление.

Преобразует значение заданного 32-битового целого числа со знаком в эквивалентное строковое представление.

Преобразует значение заданного десятичного числа в эквивалентное строковое представление.

Преобразует значение заданного объекта в эквивалентное строковое представление.

Преобразует значение заданного 8-битового целого числа со знаком в эквивалентное строковое представление.

Преобразует значение заданного числа с плавающей запятой одиночной точности в эквивалентное строковое представление.

Возвращает заданное строковое представление; фактическое преобразование не производится.

Преобразует значение заданного 16-битового целого числа без знака в эквивалентное строковое представление.

Преобразует значение заданного 8-битового целого числа без знака в эквивалентное строковое представление в указанной системе счисления.

Преобразует указанное логическое значение в эквивалентное строковое представление.

Преобразует значение заданного 64-битового целого числа со знаком в эквивалентное строковое представление.

ToString(Int32, Int32)

Преобразует значение заданного 32-битового целого числа со знаком в эквивалентное строковое представление в указанной системе счисления.

Параметры

32-разрядное целое число со знаком для преобразования.

Основание системы счисления возвращаемого значения, равное 2, 8, 10 или 16.

Возвращаемое значение

Строковое представление значения параметра value в системе счисления с основанием toBase .

Исключения

toBase не равно 2, 8, 10 или 16.

Примеры

В следующем примере каждый элемент в целочисленном массиве преобразуется в эквивалентные двоичные, шестнадцатеричные, десятичные и шестнадцатеричные строковые представления.

Комментарии

Если value значение положительное и toBase равно 2, 8 или 16, возвращаемая строка использует представление знака и величины. Если value значение отрицательное и toBase равно 2, 8 или 16, возвращаемая строка использует представление двух дополнений. Это означает, что бит верхнего порядка байта (бит 31) интерпретируется как бит знака. ToString(Int32, Int32) Если метод вызывается для создания строки, которая позже будет преобразована обратно в число, для выполнения преобразования необходимо вызвать соответствующий метод, предполагающий, что аналогичное числовое представление должно быть вызвано. Такие методы включают Convert.ToInt32(String, Int32) и Int32.Parse(String, NumberStyles).

Применяется к

ToString(Decimal, IFormatProvider)

Преобразует значение заданного десятичного числа в эквивалентное строковое представление, используя указанные сведения об особенностях форматирования, связанных с языком и региональными параметрами.

Параметры

Десятичное число для преобразования.

Объект, предоставляющий сведения о форматировании для определенного языка и региональных параметров.

Возвращаемое значение

Строковое представление параметра value .

Примеры

В следующем примере каждый элемент в массиве значений Decimal преобразуется в эквивалентное строковое представление в четырех разных языках и региональных параметрах.

Комментарии

Применяется к

ToString(Double, IFormatProvider)

Преобразует значение заданного числа с плавающей запятой двойной точности в эквивалентное строковое представление.

Параметры

Число с плавающей запятой двойной точности, которое нужно преобразовать.

Объект, предоставляющий сведения о форматировании для определенного языка и региональных параметров.

Возвращаемое значение

Строковое представление параметра value .

Примеры

В следующем примере каждый элемент в массиве значений Double преобразуется в эквивалентное строковое представление в четырех разных языках и региональных параметрах.

Комментарии

Применяется к

ToString(Int16, IFormatProvider)

Преобразует значение заданного 16-битового целого числа со знаком в эквивалентное строковое представление, учитывая указанные сведения об особенностях форматирования, связанных с языком и региональными параметрами.

Параметры

16-разрядное целое число со знаком для преобразования.

Объект, предоставляющий сведения о форматировании для определенного языка и региональных параметров.

Возвращаемое значение

Строковое представление параметра value .

Примеры

В следующем примере определяется пользовательский NumberFormatInfo класс, который определяет его отрицательный знак как строку "

" и его положительный знак в виде строки "!". Затем он вызывает ToString(Int16, IFormatProvider) метод для преобразования каждого элемента в массиве из 16-разрядных целых чисел в эквивалентное строковое представление. Преобразование использует инвариантный язык и региональные параметры, а также пользовательский NumberFormatInfo объект.

Комментарии

Применяется к

ToString(Int16, Int32)

Преобразует значение заданного 16-битового целого числа со знаком в эквивалентное строковое представление в указанной системе счисления.

Параметры

16-разрядное целое число со знаком для преобразования.

Основание системы счисления возвращаемого значения, равное 2, 8, 10 или 16.

Возвращаемое значение

Строковое представление значения параметра value в системе счисления с основанием toBase .

Исключения

toBase не равно 2, 8, 10 или 16.

Примеры

В следующем примере каждый элемент в массиве из 16-разрядных целых чисел со знаком преобразуется в эквивалентные двоичные, восьмеричные, десятичные и шестнадцатеричные строковые представления.

Комментарии

Если value значение положительное и toBase равно 2, 8 или 16, возвращаемая строка использует представление знака и величины. Если value значение отрицательное и toBase равно 2, 8 или 16, возвращаемая строка использует представление двух дополнений. Это означает, что бит высокого порядка байта (бит 15) интерпретируется как бит знака. ToString(Int16, Int32) Если метод вызывается для создания строки, которая позже будет преобразована обратно в число, для выполнения преобразования необходимо вызвать соответствующий метод, предполагающий, что аналогичное числовое представление должно быть вызвано. Такие методы включают Convert.ToInt16(String, Int32) и Int16.Parse(String, NumberStyles).

Применяется к

ToString(Int32, IFormatProvider)

Преобразует значение заданного 32-битового целого числа со знаком в эквивалентное строковое представление, учитывая указанные сведения об особенностях форматирования, связанных с языком и региональными параметрами.

Параметры

32-разрядное целое число со знаком для преобразования.

Объект, предоставляющий сведения о форматировании для определенного языка и региональных параметров.

Возвращаемое значение

Строковое представление параметра value .

Примеры

В следующем примере определяется пользовательский NumberFormatInfo класс, который определяет его отрицательный знак как строку "

" и его положительный знак в виде строки "!". Затем он вызывает ToString(Int32, IFormatProvider) метод для преобразования каждого элемента в массив целых чисел в эквивалентное строковое представление. Преобразование использует инвариантный язык и региональные параметры, а также пользовательский NumberFormatInfo объект.

Комментарии

Применяется к

ToString(Int64, IFormatProvider)

Преобразует значение заданного 64-битового целого числа со знаком в эквивалентное строковое представление, учитывая указанные сведения об особенностях форматирования, связанных с языком и региональными параметрами.

Параметры

64-разрядное целое число со знаком для преобразования.

Объект, предоставляющий сведения о форматировании для определенного языка и региональных параметров.

Возвращаемое значение

Строковое представление параметра value .

Примеры

В следующем примере определяется пользовательский NumberFormatInfo класс, который определяет его отрицательный знак как строку "

" и его положительный знак в виде строки "!". Затем он вызывает ToString(Int64, IFormatProvider) метод для преобразования каждого элемента в длинном целочисленном массиве в эквивалентное строковое представление. Преобразование использует инвариантный язык и региональные параметры, а также пользовательский NumberFormatInfo объект.

Комментарии

Применяется к

ToString(UInt64)

Этот API несовместим с CLS.

Преобразует значение заданного 64-битового целого числа без знака в эквивалентное строковое представление.

Параметры

64-разрядное целое число без знака для преобразования.

Возвращаемое значение

Строковое представление параметра value .

Примеры

В следующем примере каждый элемент в массиве целых чисел без знака преобразуется в эквивалентное строковое представление.

Комментарии

Эта реализация идентична UInt64.ToString().

Применяется к

ToString(Object, IFormatProvider)

Преобразует значение указанного объекта в эквивалентное строковое представление с использованием указанных сведений об особенностях форматирования для данного языка и региональных параметров.

Параметры

Объект, содержащий значение для преобразования, или null .

Объект, предоставляющий сведения о форматировании для определенного языка и региональных параметров.

Возвращаемое значение

Строковое представление значения параметра value или Empty, если value представляет собой объект, значение которого равно null . Если значением параметра value является null , метод возвращает null .

Примеры

В следующем примере определяется Temperature класс, который переопределяет Object.ToString метод, но не реализует IConvertible интерфейс. В этом примере показано, как вызовы Convert.ToString(Object, IFormatProvider) метода, в свою очередь, вызывают Temperature.ToString метод.

В следующем примере определяется Temperature класс, реализующий IFormattable интерфейс, но не реализующий IConvertible интерфейс. Его IFormattable.ToString реализация представляет значение в градусах Temperature Цельсия, Фаренгейта или Кельвина в зависимости от строки формата. В примере также определяется TemperatureProvider класс, реализующий IFormatProvider и предоставляющий случайно сформированную строку формата, которая используется IFormattable реализацией Temperature класса.

Комментарии

value Если параметр реализует IConvertible интерфейс, метод вызывает реализацию IConvertible.ToString(IFormatProvider) value . В противном случае, если value параметр реализует IFormattable интерфейс, метод вызывает его IFormattable.ToString(String, IFormatProvider) реализацию. Если value ни интерфейс не реализуется, метод вызывает value метод параметра ToString() , а provider параметр игнорируется.

Параметр provider используется, если value параметр реализует IConvertible интерфейс или IFormattable интерфейс. Чаще всего этот параметр используется для указания сведений provider , относящихся к языку и региональным параметрам, используемым при преобразовании value . Например, если value параметр является отрицательным десятичным числом, provider параметр может предоставить сведения о нотации, используемой для отрицательного знака и десятичного разделителя. Второй пример в следующем разделе иллюстрирует поставщик формата, который не предоставляет сведения о форматировании с учетом языка и региональных параметров.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *