2 Kasım 2018 Cuma

std::stoi - int Döndürür

Giriş
Şu satırı dahil ederiz.
#include <string>
İmzası şöyle
int stoi(const std::string& str, std::size_t* pos = 0, int base = 10);
Bu metod C++11 ile geldi. Bu metodun kardeşi std::stof ve std::stod

Normalde C metodları, char* ile çalışıyorlar. C++ std::string sınıfını tanımladığı için, içine parametre olarak std::string alan ve kullanımı kolaylaştırıcı std::stoi() metodu geldi.

Alt tarafta strtol()'u çağrılıyor, ancak C metodlarından farklı bir şekilde hata durumunda exception fırlatıyor.

Metod içine locale almıyor. Dolayısıyla global locale neyse ona göre çalışıyor.

İskelet
std::stoi hiçbir çevrim yapamazsa invalid_exception fırlatır. Eğer sonuç int'e sığmıyorsa out_of_range exception fırlatır. Bunları yakalamak gerekir.

Örnek
Herşeyi tek bir yerde yakalamak için şöyle yaparız.
try {
  int i = std::stoi (...);
} catch (const std::exception& e ) {
  ...  
} 
Örnek
Ayrı ayrı yakalamak için şöyle yaparız.
std::string str = ...;
int value;

try {
  value = std::stoi(str);
}
catch (const std::invalid_argument& ia) {
  ...
}
catch (const std::out_of_range& oor) {
  ...
}
catch (const std::exception& e)
{
  ...
}
stoi - string
Şöyle  yaparız
std::string str = "10";
int i = std::stoi (str);
stoi - string + pos
Şöyle yaparız.
std::string str = "10";
size_t end; 

int i = std::stoi(str, &end); // parse the string
if (end != str.length())
{
    // handle error.
}


Hiç yorum yok:

Yorum Gönder