std::stoi Funktion i C++

Stoi() er en standard biblioteksfunktion, der forvandler en streng til et heltal. C++-programmører bruger funktionen, som står for streng til heltal, til at hente heltal fra strenge. Derudover kan stoi()-funktionen fjerne andre komponenter, såsom efterfølgende bogstaver fra strengen.

Syntaks:

int stoi (string s, size_t* position = 0, int base = 10) 

Parametre:

  1. Den streng, der skal transformeres, er den første parameter.
  2. Placering af et heltal, der bruges til at spore, hvor mange tegn der blev læst. I det scenarie bruges den ikke, hvis denne parameter er en nul-pointer.
  3. Den tredje og sidste parameter er base. Sekvensens format bestemmer den anvendte base, hvis denne er 0. Den bruger base 10 (decimal), hvis intet argument sendes.

Eksempler:

Input: 1NoProgrammer;

Produktion: 1

Input : HelloWorld54;

Produktion : terminate kaldet efter at have kastet en forekomst af 'std::invalid_argument'

Forklaring: Dette giver en fejl, fordi hvis det første tegn er ikke-heltal, stopper stoi()-funktionen

Input : Du har 1 tastatur;

Produktion : terminate kaldet efter at have kastet en forekomst af 'std::invalid_argument'

hvad(): står

Returtype: Strengværdien af ​​et argument sendt til stående() funktion returneres som et heltal.

Hvordan det virker?

Stoi()-funktionen, som accepterer en streng som et argument, kan konvertere heltalskomponenten i en streng til en heltalstype. Det vil kun overveje heltalsværdier op til det første ikke-heltalselement eller slutningen af ​​strengen.

Når vi udfører nedenstående program, vil der blive produceret en fejl under kørsel. Dette skyldes det faktum, at stoi()-funktionen stopper med at krydse strengen, når den støder på et ikke-heltalstegn eller et mellemrumstegn. Stoi()-funktionen afsluttes, hvis starttegnet er et ikke-heltal.

Eksempel:

C++




// C++ Program to convert> // string into integer> // Using stoi function> // Error occurred> #include> #include> using> namespace> std;> // Driver Code> int> main()> {> > string s => 'GeeksForGeeks 1'> ;> > // calling stoi() passing string as parameter.> > int> n = stoi(s);> > cout < < n;> }>

terminate called after throwing an instance of 'std::invalid_argument' what(): stoi 

Det giver en fejl, fordi stoi()-funktionen støder på et mellemrumstegn før 1.

Eksempel:

C++




// C++ Program to convert> // string into integer> // Using stoi> #include> #include> using> namespace> std;> // Driver Code> int> main()> {> > string str => '2009, techcodeview.com_founded'> ;> > string str1 => '0x6C1'> ;> > string str2 => '-10010010101'> ;> > // Calling stoi() for all strings.> > int> num = stoi(str);> > int> num_hex = stoi(str1, nullptr, 16);> > int> num_bin = stoi(str2, nullptr, 2);> > // printing converted values> > cout < < str < <> ': '> < < num < < endl;> > cout < < str1 < <> ': '> < < num_hex < < endl;> > cout < < str2 < <> ': '> < < num_bin < < endl;> > return> 0;> }>

Produktion

2009, techcodeview.com_founded: 2009 0x6C1: 1729 -10010010101: -1173 

Tidskompleksitet: O(n) // n er længden af ​​strengen.

Hjælpeplads: O(1)