std::stoi Funksjon i C++

Stoi() er en standard bibliotekfunksjon som gjør en streng til et heltall. C++-programmerere bruker funksjonen, som står for streng til heltall, for å få heltall fra strenger. I tillegg kan stoi()-funksjonen fjerne andre komponenter, for eksempel etterfølgende bokstaver fra strengen.

Syntaks:

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

Parametere:

  1. Strengen som må transformeres er den første parameteren.
  2. Plassering av et heltall som brukes til å spore hvor mange tegn som ble lest. I det scenariet brukes den ikke hvis denne parameteren er en null-peker.
  3. Den tredje og siste parameteren er base. Sekvensens format bestemmer grunntallet som brukes hvis dette er 0. Det bruker grunntallet 10 (desimal) hvis ingen argumenter sendes.

Eksempler:

Inndata: 1NoProgrammer;

Produksjon: 1

Inndata : HelloWorld54;

Produksjon : terminate kalt etter å ha kastet en forekomst av 'std::invalid_argument'

Forklaring: Dette gir ut en feil fordi hvis det første tegnet er ikke-heltall, avsluttes funksjonen stoi().

Inndata : Du har 1 tastatur;

Produksjon : terminate kalt etter å ha kastet en forekomst av 'std::invalid_argument'

hva(): står

Returtype: Strengverdien til et argument sendt til stående() funksjonen returneres som et heltall.

Hvordan det fungerer?

Stoi()-funksjonen, som aksepterer en streng som et argument, kan konvertere heltallskomponenten til en streng til en heltallstype. Den vil kun vurdere heltallsverdier opp til det første ikke-heltallselementet eller slutten av strengen.

Når vi kjører programmet nedenfor, vil det oppstå en feil under kjøring. Dette skyldes det faktum at stoi()-funksjonen slutter å krysse strengen når den møter et ikke-heltallstegn eller et mellomromstegn. Stoi()-funksjonen avsluttes hvis starttegnet er et ikke-heltall.

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 gir en feil fordi stoi()-funksjonen møter et mellomromstegn 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;> }>

Produksjon

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

Tidskompleksitet: O(n) // n er lengden på strengen.

Ekstra plass: O(1)