Giriş
Şu satırı dahil ederiz.
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.
Şu satırı dahil ederiz.
#include <string>
İmzası şöyleint 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::stodNormalde 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.
Şöyle yaparız
Şöyle yaparız.
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