C ++ strtoull () - C ++ standarta bibliotēka

Funkcija strtoull () valodā C ++ interpretē virknes saturu kā neatņemamu norādītās bāzes skaitli un atgriež tās vērtību kā neparakstītu garu garu int.

Funkcija strtoull () valodā C ++ interpretē virknes saturu kā neatņemamu norādītās bāzes skaitli un atgriež tās vērtību kā neparakstītu garu garu int.

Šī funkcija arī norāda, ka rādītājs norāda uz pirmo rakstzīmi pēc pēdējās derīgās rakstzīmes, ja tādas ir, pretējā gadījumā rādītājs tiek iestatīts uz nulli.

 10. pamatnei un virknei "41aac" Derīga skaitliskā daļa -> 42 Pirmā rakstzīme pēc derīgas skaitliskās daļas -> a

strtoull () prototips (pēc standarta C ++ 11)

 neparakstīts garš garais int strtoull (const char * str, char ** end, int base);

Funkcija strtoull () kā virkni ņem virkni, rādītāju uz rakstzīmi un veselu skaitli - bāze, virknes saturu interpretē kā dotās bāzes neatņemamu skaitli un atgriež neparakstītu garu garu int vērtību.

Šī funkcija ir definēta galvenes failā.

strtoull () parametri

  • str: Virkne ar neatņemamu skaitli.
  • end:Atsauce uz jau piešķirtu char * tipa objektu. Beigu vērtību funkcija nosaka nākamajai rakstzīmei str pēc pēdējās derīgās rakstzīmes. Šis parametrs var būt arī nulles rādītājs, tādā gadījumā tas netiek izmantots.
  • base:Neatņemamās vērtības pamats. Bāzes derīgo vērtību kopa ir (0, 2, 3,…, 35, 36).

strtoull () Atgriešanās vērtība

Funkcija strtoull () atgriež:

  • neparakstīta garā garā int vērtība (kas tiek pārveidota no virknes).
  • 0, ja nevarēja veikt derīgu konversiju.

1. piemērs: Kā darbojas strtoull () funkcija?

 #include #include #include using namespace std; int main() ( int base = 10; char numberString() = "231ax12"; char *end; unsigned long long int number; number = strtoull(numberString, &end, base); cout << "String value = " << numberString << endl; cout << "Unsigned Long long int value = " << number << endl; cout << "End String = " << end << endl; strcpy(numberString, "231"); cout << "String value = " << numberString << endl; number = strtoull(numberString, &end, base); cout << "Unsigned Long long int value = " << number << endl; if (*end) ( cout << end; ) else ( cout << "Null pointer"; ) return 0; )

Palaidot programmu, izeja būs:

 Virknes vērtība = 231ax12 neparakstīta garā garā int vērtība = 231 beigu virkne = ax12 virknes vērtība = 231 neparakstītā garā garā int vērtība = 231 nulles rādītājs

Funkcijas strtoull () derīga veselā skaitļa vērtība sastāv no:

  • Papildu + vai - zīme.
  • Oktāla pamatnes prefikss 0 (attiecas tikai tad, ja bāze = 8 vai 0).
  • Heksadecimālās bāzes prefikss 0x vai 0X (attiecas tikai tad, ja bāze = 16 vai 0).
  • Ciparu un / vai alfabētu secība (ja bāze ir lielāka par 10).

Ja argumenta sākumā ir mīnus zīme (-), negatīvais skaitlis netieši tiek pārveidots par neparakstītu garu garu int tipu, kas ir pozitīvs skaitlis.

Parametra bāzes derīgās vērtības ir (0, 2, 3,…, 35, 36). Derīgo ciparu kopa pamatnei 2 ir (0, 1), pamatnei 3 ir (0, 1, 2) un tā tālāk. Bāzēm, kas sākas no 11 līdz 36, derīgos ciparos ir alfabēti. Derīgo ciparu kopa pamatnei 11 ir (0, 1,…, 9, A, a), pamatnei 12 ir (0, 1,…, 9, A, a, B, b) un tā tālāk.

2. piemērs: funkcija strtoull () ar dažādām bāzēm

 #include #include using namespace std; int main() ( char *end; cout << "148ax" << " to Unsigned Long Long Int with base-5 = " << strtoll("148ax", &end, 5) << endl; cout << "End String = " << end << endl << endl; cout << "148ax" << " to Unsigned Long Long Int with base-15 = " << strtoll("148ax", &end, 15) << endl; cout << "End String = " << end << endl << endl; cout << "148ax" << " to Unsigned Long Long Int with base-35 = " << strtoll("148ax", &end, 35) << endl; cout << "End String = " << end << endl << endl; return 0; )

Palaidot programmu, izeja būs:

 148ax līdz neparakstītam garam garam vidējam ar bāzes-5 = 9 gala virkni = 8ax 148ax līdz neparakstītam garam garam vidējam skaitlim ar pamatu-15 = 4405 gala virkne = x 148ax līdz neparakstītam garam garam vidējam skaitlim ar pamatu-35 = 1682308 gala virkne =

Funkcija strtoull () ignorē visas vadošās atstarpes rakstzīmes, līdz tiek atrasts primārais raksturs, kas nav atstarpes.

Parasti derīgam veselā skaitļa argumentam strtoull () funkcijai ir šāda forma:

 (atstarpe) (- | +) (0 | 0x) (burtciparu rakstzīmes)

Tad, sākot ar šo rakstzīmi, ir nepieciešams pēc iespējas vairāk rakstzīmju, kas veido derīgu vesela skaitļa attēlojumu un pārveido tos par garu garu int vērtību. Tas, kas paliek pāri no virknes pēc pēdējās derīgās rakstzīmes, tiek ignorēts un neietekmē rezultātu.

3. piemērs: funkcija strtoull (), lai vadītu atstarpi, atņemot un nederīgu reklāmguvumu

 #include #include using namespace std; int main() ( char *end; cout << " 25axbz" << " to Unsigned Long Long Int with base-11 = " << strtoull(" 25axbz", &end, 11) << endl; cout << "End String = " << end << endl << endl; /* Negative value is converted to unsigned long long int type */ cout << " -110bcd" << " to Unsigned Long Long Int with base-2 = " << strtoull(" -110bcd", &end, 2) << endl; cout << "End String = " << end << endl << endl; cout << "ax110.97" << " to Unsigned Long Long Int with base-10 = " << strtoull("ax110.97", &end, 10) << endl; cout << "End String = " << end << endl << endl; return 0; )

Palaidot programmu, izeja būs:

 25axbz uz neparakstītu garu garu Int ar bāzes-11 = 307 beigu virkni = xbz -110bcd uz neparakstītu garu garu vidēju ar bāzes-2 = 18446744073709551610 beigu virkni = bcd ax110.97 līdz neparakstītu garu garu vidējo ar bāzes-10 = 0 gala virkni = ax110.97

Ja bāze ir 0, skaitliskā bāze tiek noteikta automātiski, aplūkojot virknes formātu. Ja prefikss ir 0, pamats ir oktāls (8). Ja prefikss ir 0x vai 0X, bāze ir heksadecimālā (16), pretējā gadījumā bāze ir decimāldaļa (10).

4. piemērs: funkcija strtoull () ar 0 bāzi

 #include #include using namespace std; int main() ( char *end; /* octal base */ cout << "017x" << " to Unsigned Long Long Int with base-0 = " << strtoull("017x", &end, 0) << endl; cout << "End String = " << end << endl << endl; /* hexadecimal base */ cout << "0x1cg" << " to Unsigned Long Long Int with base-0 = " << strtoull("0x1cg", &end, 0) << endl; cout << "End String = " << end << endl << endl; /* decimal base */ cout << "70sxz" << " to Unsigned Long Long Int with base-0 = " << strtoull("70sxz", &end, 0) << endl; cout << "End String = " << end << endl << endl; return 0; )

Palaidot programmu, izeja būs:

 017x līdz neparakstītam garam garam vidējam ar bāzes-0 = 15 beigu virkni = x 0x1cg līdz neparakstītam garam garam vidējam skaitlim ar bāzes-0 = 28 gala virkni = g 70 sekundes līdz neparakstītam garam garam vidējam skaitlim ar bāzes-0 = 70 gala virkni = sxz

Interesanti raksti...