[C++] Jak przekonwertować string na int?
Gdy podczas kodowania w C++ zajdzie potrzeba przekonwertowania typu na inny typ, z pomocą przychodzi kilka funkcji. W tym wpisie zajmiemy się konwersją typu string na int. Aby przekonwertować tekst na na typ int należy posłużyć się funkcją std::stoi, która jako pierwszy argument przyjmuje ciąg do przekonwertowania. Do funkcji tej można przekazać jeszcze dwa argumenty:
- (std::size_t) pozycja - wskaźnik, którego wartość jest ustawiana (jeśli zostanie podana > 0) do pozycji następnego znaku w przekazanym jako pierwszy argument ciągu (domyślnie 0);
- (int) podstawa - wartość numeryczna podstawy (domyślnie 10);
Uwaga! std::stoi nie przekonwertuje ciągu zawierającego liczbę zmiennoprzecinkową na typ float. Aby uzyskać typ float należy użyć funkcji std::stof.
Przykład 1
#include <iostream> #include <string> int main() { std::string text_1 = "45"; std::string text_2 = "2.1"; int int_type_1 = std::stoi(text_1); int int_type_2 = std::stoi(text_2); std::cout << int_type_1 << "\n";
// Wyświetli: 45std::cout << int_type_2 << "\n";
// Wyświetli: 2return 0; }
W powyższym przykładzie do zmiennej int_type_1 zostanie przypisana wartość 45, natomiast do zmiennej int_type_2 zostanie przypisany pierwszy znak z ciągu połączonego kropkami, czyli w tym przypadku 2.
Przykład 2
#include <iostream>
#include <string>
int main()
{
std::string text_1 = "45";
std::string text_2 = "Hello World";
int int_type_1 = std::stoi(text_1);
int int_type_2 = std::stoi(text_2);
std::cout << int_type_1 << '\n';
std::cout << int_type_2 << '\n';
return 0;
}
W tym przykładzie kod się skompiluje, ale po uruchomieniu programu zostanie wyrzucony wyjątek o błędnym argumencie dla stoi, ponieważ zmienna text_2 zawiera niepoprawną wartość, która musi być cyfrą lub ciągiem cyfr.
Komentarze
Prześlij komentarz
Dzięki za komentarz!