Přehled funkcí std::stoi, std::stol, std::stoll, std::stoul, std::stoull, std::stof, std::stod a std::stold
Funkce z rodiny std::stoX poskytují v jazyce C++ efektivní způsob převodu řetězců na číselné hodnoty. Tyto funkce jsou součástí standardní knihovny <string> a umožňují snadný převod textových dat na různé číselné typy, což je užitečné například při zpracování vstupů od uživatele nebo při práci s daty z externích zdrojů. V tomto článku si podrobněji rozebereme jednotlivé funkce, jejich použití a specifika.
1. std::stoi
Funkce std::stoi převádí řetězec na celočíselnou hodnotu typu int. Její použití je jednoduché:
#include <string>
#include <iostream>
int main() {
std::string str = "123";
int value = std::stoi(str);
std::cout << "Hodnota: " << value << std::endl;
return 0;
}
Parametry:
str: Řetězec, který má být převeden.pos(volitelný): Ukazatel na index, kde převod skončil.base(volitelný): Číselná soustava (např. 10 pro desítkovou, 16 pro šestnáctkovou).
2. std::stol
Funkce std::stol převádí řetězec na hodnotu typu long. Používá se obdobně jako std::stoi, ale je vhodná pro větší čísla:
std::string str = "123456789";
long value = std::stol(str);
3. std::stoll
Funkce std::stoll převádí řetězec na hodnotu typu long long, což umožňuje práci s ještě většími čísly:
std::string str = "9223372036854775807";
long long value = std::stoll(str);
4. std::stoul
Funkce std::stoul převádí řetězec na hodnotu typu unsigned long. Je vhodná pro práci s nezápornými čísly:
std::string str = "4294967295";
unsigned long value = std::stoul(str);
5. std::stoull
Funkce std::stoull převádí řetězec na hodnotu typu unsigned long long. Používá se pro extrémně velká nezáporná čísla:
std::string str = "18446744073709551615";
unsigned long long value = std::stoull(str);
6. std::stof
Funkce std::stof převádí řetězec na hodnotu typu float. Je užitečná při práci s desetinnými čísly:
std::string str = "3.14";
float value = std::stof(str);
7. std::stod
Funkce std::stod převádí řetězec na hodnotu typu double. Používá se pro přesnější desetinné hodnoty:
std::string str = "2.718281828";
double value = std::stod(str);
8. std::stold
Funkce std::stold převádí řetězec na hodnotu typu long double. Je vhodná pro extrémně přesné výpočty:
std::string str = "1.618033988749894";
long double value = std::stold(str);
Společné vlastnosti
- Výjimky: Pokud řetězec nelze převést, funkce vyvolají výjimku
std::invalid_argument. Pokud je hodnota mimo rozsah cílového typu, vyvolá sestd::out_of_range. - Základní číselná soustava: Funkce podporují různé číselné soustavy (např. binární, osmičkovou, šestnáctkovou) pomocí parametru
base.
Závěr
Funkce std::stoi, std::stol, std::stoll, std::stoul, std::stoull, std::stof, std::stod a std::stold jsou nepostradatelnými nástroji pro převod řetězců na číselné hodnoty v C++. Každá z nich má své specifické použití v závislosti na požadovaném datovém typu a rozsahu hodnot. Při jejich použití je důležité myslet na možné výjimky a správně ošetřit vstupy.