[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: 45
 std::cout << int_type_2 << "\n"; // Wyświetli: 2
 
 return 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

Popular

[C++] Jak obliczyć pole i obwód trapezu?

[HTML] Jak wyśrodkować tekst?

[PHP] Jak pobrać adres strony?