Рассмотрим следующий строковый литерал:
«У меня есть книги стоимостью 14,25 доллара, а другие — 34,87 доллара».
Теперь подстроки «14,25» и «34,87» являются строковыми литералами, а не числами. Если у вас есть код,
«14,25» + «34,87»
в C ++ вы не получите 49.12. Фактически, компилятор должен выдать сообщение об ошибке. Чтобы получить результат 49,12, «14,25» необходимо преобразовать в числовой тип double или float, а «34,87» нужно преобразовать в числовой тип double или float.
Название этого руководства — «Преобразование строки C ++ в двойное преобразование». Ваша цель — преобразовать строку в двойную; или сделать все, что связано с этим?
- строка в целое число
- строка в длинное целое число
- строка для плавания
- строка для удвоения
- строка в длинный двойной
В этом руководстве объясняются все эти преобразования и многое другое. Конвертируется объект в строковой форме. В строковом классе C ++ есть функции для этого. Чтобы использовать эти функции, в программу должен быть включен строковый класс.
- Преобразование строки в целое число
- Преобразование строки в длинное целое число
- Преобразование строки в длинное целое без знака
- Преобразование строки в беззнаковое длинное длинное целое число
- Преобразование строки в число с плавающей запятой
- Преобразование строки в двойное преобразование
- Строка в длинное двойное преобразование
- Полный синтаксис
- Пробел
- Заключение
Преобразование строки в целое число
Следующая программа делает это:
«20» to int + «30» to int = 50 as int
Используемый упрощенный синтаксис преобразования:
stoi(str)
где stoi означает преобразование строки в целое число. Программа:
#include <string>
#include <iostream>
using namespace std;int main()
{
char str1[] = «20»;
char str2[] = «30»;
int num1 = stoi(str1);
int num2 = stoi(str2);
int result = num1 + num2;
cout << result << endl;return 0;
}
Выход 50.
Преобразование строки в длинное целое число
Следующая программа делает это:
«20» to long int + «30» to long int = 50 as long int
Используемый упрощенный синтаксис преобразования:
stol(str)
где stol означает преобразование строки в длинное целое число. Программа:
#include <string>
#include <iostream>
using namespace std;int main()
{
char str1[] = «20»;
char str2[] = «30»;
long int num1 = stol(str1);
long int num2 = stol(str2);
long int result = num1 + num2;
cout << result << endl;return 0;
}
Выход 50.
Преобразование строки в длинное целое без знака
Следующая программа делает это:
«20» to unsigned long int + «30» to unsigned long int = 50 as unsigned long int
Используемый упрощенный синтаксис преобразования:
stoul(str)
где stoul означает преобразование строки в длинное целое без знака. Программа:
#include <string>
#include <iostream>
using namespace std;int main()
{
char str1[] = «20»;
char str2[] = «30»;
unsigned long int num1 = stoul(str1);
unsigned long int num2 = stoul(str2);
unsigned long int result = num1 + num2;
cout << result << endl;return 0;
}
Выход 50.
Преобразование строки в беззнаковое длинное длинное целое число
Следующая программа делает это:
«20» to unsigned long, long int + «30» to unsigned long long int = 50 as unsigned long, long int
Используемый упрощенный синтаксис преобразования:
stoull(str)
где stoul означает преобразование строки в длинное целое без знака. Программа:
#include <string>
#include <iostream>
using namespace std;int main()
{
char str1[] = «20»;
char str2[] = «30»;
unsigned long long int num1 = stoull(str1);
unsigned long long int num2 = stoull(str2);
unsigned long long int result = num1 + num2;
cout << result << endl;return 0;
}
Выход 50.
Преобразование строки в число с плавающей запятой
Следующая программа делает это:
«14.25» to float + «34.87» to float = 49.12 as float
Используемый упрощенный синтаксис преобразования:
stof(str)
где stof означает «строка-поплавок». Программа:
#include <string>
#include <iostream>
using namespace std;int main()
{
char str1[] = «14.25»;
char str2[] = «34.87»;
float num1 = stof(str1);
float num2 = stof(str2);
float result = num1 + num2;
cout << result << endl;return 0;
}
Результат:
49.12
Преобразование строки в двойное преобразование
Следующая программа делает это:
«14.25» to double + «34.87» to double = 49.12 as double
Используемый упрощенный синтаксис преобразования:
stod(str)
где stof означает «строка-поплавок». Программа:
#include <string>
#include <iostream>
using namespace std;int main()
{
char str1[] = «14.25»;
char str2[] = «34.87»;
double num1 = stod(str1);
double num2 = stod(str2);
double result = num1 + num2;
cout << result << endl;return 0;
}
Результат:
49.12
Строка в длинное двойное преобразование
Следующая программа делает это:
«14.25» to long double + «34.87» to long double = 49.12 as double
Используемый упрощенный синтаксис преобразования:
stold(str)
где stof означает «строка-поплавок». Программа:
#include <string>
#include <iostream>
using namespace std;int main()
{
char str1[] = «14.25»;
char str2[] = «34.87»;
long double num1 = stold(str1);
long double num2 = stold(str2);
long double result = num1 + num2;
cout << result << endl;return 0;
}
Результат:
49.12
Полный синтаксис
String to Integer
Полный синтаксис для преобразования строки в int:
int stoi(const string& str, size_t* idx = nullptr, int base = 10)
Второй аргумент может быть разрешен как nullptr. По умолчанию для третьего аргумента используется основание 10. Его можно изменить на другое основание, например, на 16.
Следующая программа делает это:
«A» to int—base—16 + «B» to int—base—16 = 21 as int—base—10
#include <string>
#include <iostream>
using namespace std;int main()
{
char str1[] = «A»;
char str2[] = «B»;
int num1 = stoi(str1, nullptr, 16);
int num2 = stoi(str2, nullptr, 16);
int result = num1 + num2;
cout << result << endl;return 0;
}
Выход 21.
Аналогично объясняются и другие синтаксисы.
Пробел
Пробелы: ’’, ’\ n’, ’\ r’, ’\ f’, ’\ t’, ’\ v’. Один или несколько из них могут быть перед или после числа в строке. Во время преобразования пробелы удаляются.
Следующая программа показывает, как удаляются пробелы при преобразовании строки в int:
#include <string>
#include <iostream>
using namespace std;int main()
{
char str1[] = «\n 20 \n«;
char str2[] = «\t 30 \t«;
int num1 = stoi(str1);
int num2 = stoi(str2);
int result = num1 + num2;
cout << result << endl;return 0;
}
Следующая программа показывает, как удаляются пробелы при преобразовании строки в long int:
#include <string>
#include <iostream>
using namespace std;int main()
{
char str1[] = «\n 20 \n«;
char str2[] = «\t 30 \t«;
long int num1 = stol(str1);
long int num2 = stol(str2);
long int result = num1 + num2;
cout << result << endl;return 0;
}
Выход 50.
Следующая программа показывает, как удаляются пробелы при преобразовании строки в unsigned long int:
#include <string>
#include <iostream>
using namespace std;int main()
{
char str1[] = «\n 20 \n«;
char str2[] = «\t 30 \t«;
unsigned long int num1 = stoul(str1);
unsigned long int num2 = stoul(str2);
unsigned long int result = num1 + num2;
cout << result << endl;return 0;
}
Выход 50.
Следующая программа показывает, как удаляются пробелы при преобразовании строки в unsigned long long int:
#include <string>
#include <iostream>
using namespace std;int main()
{
char str1[] = «\n 20 \n«;
char str2[] = «\t 30 \t«;
unsigned long long int num1 = stoull(str1);
unsigned long long int num2 = stoull(str2);
unsigned long long int result = num1 + num2;
cout << result << endl;return 0;
}
Выход 50.
Следующая программа показывает, как удаляются пробелы при преобразовании строки в число с плавающей запятой:
#include <string>
#include <iostream>
using namespace std;int main()
{
char str1[] = «\n 14.25 \n«;
char str2[] = «\t 34.87 \t«;
float num1 = stof(str1);
float num2 = stof(str2);
float result = num1 + num2;
cout << result << endl;return 0;
}
Результат:
49.12
Следующая программа показывает, как удаляются пробелы при преобразовании строки в двойную:
#include <string>
#include <iostream>
using namespace std;int main()
{
char str1[] = «\n 14.25 \n«;
char str2[] = «\t 34.87 \t«;
double num1 = stod(str1);
double num2 = stod(str2);
double result = num1 + num2;
cout << result << endl;return 0;
}
Результат:
49.12
Следующая программа показывает, как удаляются пробелы при преобразовании строки в long double:
#include <string>
#include <iostream>
using namespace std;int main()
{
char str1[] = «\n 14.25 \n«;
char str2[] = «\t 34.87 \t«;
long double num1 = stold(str1);
long double num2 = stold(str2);
long double result = num1 + num2;
cout << result << endl;return 0;
}
Результат:
49.12
Следующая программа показывает, как удаляются пробелы при преобразовании строки в int по основанию 16:
#include <string>
#include <iostream>
using namespace std;int main()
{
char str1[] = «\n A \n«;
char str2[] = «\t B \t«;
int num1 = stoi(str1, nullptr, 16);
int num2 = stoi(str2, nullptr, 16);
int result = num1 + num2;
cout << result << endl;return 0;
}
Выход 21.
Заключение
В C ++ есть функции для преобразования строк в числа. При преобразовании пробелы игнорируются. Если в строке есть символ, который не является цифрой или пробелом, результат будет ненадежным. Функции находятся в строковой библиотеке: stoi (), stol (), stoul (), stoll (), stoull (), stof (), stod () и stold ().