C ++ wcstoul () - C ++ Standardbibliotek

Funktionen wcstoul () i C ++ fortolker indholdet af en bred streng som et usigneret integralt nummer på den angivne base og returnerer dens værdi som et usigneret langt int.

Funktionen wcstoul () indstiller også en markør til at pege på det første tegn efter det sidste gyldige tegn i den brede streng, hvis der er nogen, ellers er markøren indstillet til null.

 For base 10 og den brede streng L "29hi $" Gyldig numerisk del -> 29 Første tegn efter gyldig numerisk del -> h

Det er defineret i header-fil.

wcstoul () prototype

 usigneret lang wcstoul (const wchar_t * str, wchar_t ** str_end, int base);

Funktionen wcstoul () tager en bred strengstr, en markør til bred karakter str_end og en heltal værdi - base som parameter.

Det fortolker derefter indholdet af bred streng som et usigneret integralt nummer på den givne base og returnerer en usigneret lang int-værdi.

wcstoul () Parametre

  • str: En bred streng med repræsentation af et usigneret integralt nummer.
  • str_end: En markør til en markør til en bred karakter. Værdien af ​​str_end indstilles af funktionen til det næste tegn i str efter det sidste gyldige tegn. Denne parameter kan også være en nul pointer, i hvilket tilfælde den ikke bruges.
  • base: Grundlaget for den integrerede værdi. Sættet med gyldige værdier for base er (0, 2, 3,…, 35, 36).

wcstoul () Returværdi

Funktionen wcstoul () returnerer:

  • en usigneret lang int-værdi (som konverteres fra strengen).
  • 0, hvis der ikke kunne udføres nogen gyldig konvertering.

Eksempel 1: Hvordan fungerer wcstoul () -funktionen?

 #include #include #include using namespace std; int main() ( setlocale(LC_ALL, "en_US.UTF-8"); wchar_t str1() = L"101aau16b6"; wchar_t str2() = L"59"; wchar_t *end; unsigned long value; int base = 10; value = wcstoul(str1, &end, base); wcout << L"String value = " << str1 << endl; wcout << L"Unsigned Long Int value = " << value << endl; wcout << L"End String = " << end << endl; value = wcstoul(str2, &end, base); wcout << L"String value = " << str2 << endl; wcout << L"Unsigned Long Int value = " << value << endl; wcout << L"End String = " << end << endl; return 0; )

Når du kører programmet, vil output være:

 Strengværdi = 101aa ᚶ Ikke-signeret Lang Int-værdi = 101 Slutstreng = aa ᚶ Strengværdi = 59 Unsigneret Lang Int-værdi = 59 Slutstreng =

En gyldig heltalværdi for wcstoul () -funktionen består af:

  • Et valgfrit + eller - tegn.
  • Et præfiks 0 for oktal base (gælder kun når base = 8 eller 0).
  • Et præfiks 0x eller 0X for hexadecimal base (gælder kun når base = 16 eller 0).
  • En række af cifre og / eller alfabeter (hvis basen er større end 10).

Hvis argumentet indeholder et minustegn (-) i starten, konverteres det negative tal implicit til en usigneret lang int-type, som er et positivt tal.

De gyldige værdier for parameterbasen er (0, 2, 3,…, 35, 36). Et sæt gyldige cifre for base 2 er (0, 1), for base 3 er (0, 1, 2) og så videre. For baser, der starter fra 11 til 36, inkluderer gyldige cifre alfabeter.

Sættet med gyldige cifre for base 11 er (0, 1,…, 9, A, a), for base 12 er (0, 1,…, 9, A, a, B, b) og så videre.

Eksempel 2: wcstoul () funktion med forskellige baser

 #include #include #include using namespace std; int main() ( setlocale(LC_ALL, "en_US.UTF-8"); wchar_t *end; wchar_t str() = L"311bzu03feu03ff"; wcout << str << L" to Unsigned Long Int with base-5 = " << wcstoul(str, &end, 5) << endl; wcout << L"End String = " << end << endl << endl; wcout << str << L" to Unsigned Long Int with base-12 = " << wcstoul(str, &end, 12) << endl; wcout << L"End String = " << end << endl << endl; wcout << str << L" to Unsigned Long Int with base-36 = " << wcstoul(str, &end, 36) << endl; wcout << L"End String = " << end << endl << endl; return 0; )

Når du kører programmet, vil output være:

 311bzϾϿ til usigneret Long Int med base-5 = 81 slutstreng = bzϾϿ 311bzϾϿ til usigneret Long Int med base-12 = 5351 Endestreng = zϾϿ 311bzϾϿ til usigneret Long Int med base-36 = 5087231 Endstreng = ϾϿ

Funktionen wcstoul () ignorerer alle de ledende mellemrumstegn, indtil det primære ikke-hvide mellemrumstegn findes.

Generelt har et gyldigt heltalargument for wcstoul () -funktionen følgende form:

 (mellemrum) (- | +) (0 | 0x) (alfanumeriske tegn)

Derefter tager det så mange tegn som muligt fra denne karakter, der danner en gyldig heltalrepræsentation og konverterer dem til en usigneret lang int-værdi.

Uanset hvad der er tilbage af strengen efter det sidste gyldige tegn ignoreres og har ingen indflydelse på resultatet.

Eksempel 3: wcstoul () -funktion til førende mellemrum og ugyldig konvertering

 #include #include #include using namespace std; int main() ( setlocale(LC_ALL, "en_US.UTF-8"); wchar_t *end; wcout << L" 205u03e2x to Unsigned Long Int with base-5 = " << wcstoul(L" 205u03e2x", &end, 5) << endl; wcout << L"End String = " << end << endl << endl; wcout << L"xu019cz201 to Unsigned Long Int with base-12 = " << wcstoul(L"xu019cz201", &end, 12) << endl; wcout << L"End String = " << end << endl << endl; return 0; )

Når du kører programmet, vil output være:

 205Ϣx til usigneret Long Int med base-5 = 10 End Streng = 5Ϣx xƜz201 til Usigneret Long Int med base-12 = 0 End Streng = xƜz201

Hvis basen er 0, bestemmes den numeriske base automatisk ved at se på strengens format. Hvis præfikset er 0, er basen oktal (8). Hvis præfikset er 0x eller 0X, er basen hexadecimal (16), ellers er basen decimal (10).

Eksempel 4: wcstoul () -funktion med base 0

 #include #include #include using namespace std; int main() ( setlocale(LC_ALL, "en_US.UTF-8"); wchar_t *end; wcout << L"0539u1e84 to Unsigned Long Int with base-0 = " << wcstoul(L"0539u1e84", &end, 0) << endl; wcout << L"End String = " << end << endl << endl; wcout << L"0xa31u05e2 to Unsigned Long Int with base-0 = " << wcstoul(L"0xa31u05e2", &end, 0) << endl; wcout << L"End String = " << end << endl << endl; wcout << L"119xu060f to Unsigned Long Int with base-0 = " << wcstoul(L"119xu060f", &end, 0) << endl; wcout << L"End String = " << end << endl << endl; return 0; )

Når du kører programmet, vil output være:

 0539Ẅ til Unsigneret Long Int med base-0 = 43 Endestreng = 9Ẅ 0xa31 ע til Unsigneret Long Int med base-0 = 2609 Endestreng = ע 119x ؏ til Unsignet Long Int med base-0 = 119 Endestreng = x ؏

Interessante artikler...