C ++ wcstoul () - C ++ Standardbibliotek

Funktionen wcstoul () i C ++ tolkar innehållet i en bred sträng som ett osignerat integralt nummer för den angivna basen och returnerar dess värde som ett osignerat långt int.

Funktionen wcstoul () ställer också in en pekare för att peka på det första tecknet efter den sista giltiga tecknet i den breda strängen om det finns någon, annars är pekaren satt till null.

 För bas 10 och bredsträngen L "29hi $" Giltig numerisk del -> 29 Första tecknet efter giltig numerisk del -> h

Det definieras i rubrikfilen.

wcstoul () prototyp

 osignerad lång wcstoul (const wchar_t * str, wchar_t ** str_end, int-bas);

Funktionen wcstoul () tar en bred strängstr, en pekare till brett tecken str_end och ett heltal - bas som parameter.

Det tolkar sedan innehållet i bred sträng som ett osignerat integralt nummer för den givna basen och returnerar ett osignerat långt int-värde.

wcstoul () Parametrar

  • str: En bred sträng som representerar ett osignerat integralt nummer.
  • str_end: En pekare till en pekare till ett brett tecken. Värdet på str_end ställs in av funktionen till nästa tecken i str efter det sista giltiga tecknet. Denna parameter kan också vara en nollpekare, i vilket fall den inte används.
  • bas: Basen för det integrerade värdet. Uppsättningen av giltiga värden för bas är (0, 2, 3,…, 35, 36).

wcstoul () Returvärde

Funktionen wcstoul () returnerar:

  • ett osignerat långt intvärde (som konverteras från strängen).
  • 0 om ingen giltig konvertering kunde utföras.

Exempel 1: Hur fungerar 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ör programmet blir resultatet:

 Strängvärde = 101aa ᚶ Osignerat långt Int-värde = 101 Slutsträng = aa ᚶ Strängvärde = 59 Osignerat långt Int-värde = 59 Slutsträng =

Ett giltigt heltal för wcstoul () -funktionen består av:

  • Ett valfritt + eller - tecken.
  • Ett prefix 0 för oktal bas (gäller endast när bas = 8 eller 0).
  • Ett prefix 0x eller 0X för hexadecimal bas (gäller endast när bas = 16 eller 0).
  • En sekvens av siffror och / eller alfabet (om basen är större än 10).

Om argumentet innehåller ett minus (-) i början, omvandlas det negativa talet implicit till en osignerad lång int-typ som är ett positivt tal.

De giltiga värdena för parameterbas är (0, 2, 3,…, 35, 36). En uppsättning giltiga siffror för bas 2 är (0, 1), för bas 3 är (0, 1, 2) och så vidare. För baser som börjar från 11 till 36 inkluderar giltiga siffror alfabet.

Uppsättningen med giltiga siffror för bas 11 är (0, 1,…, 9, A, a), för bas 12 är (0, 1,…, 9, A, a, B, b) och så vidare.

Exempel 2: wcstoul () -funktion med olika 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ör programmet blir resultatet:

 311bzϾϿ till osignerad lång int med bas-5 = 81 ändsträng = bzϾϿ 311bzϾϿ till osignerad lång int med bas-12 = 5351 ändsträng = zϾϿ 311bzϾϿ till osignerad lång int med bas-36 = 5087231 slutsträng = ϾϿ

Funktionen wcstoul () ignorerar alla ledande blankstegstecken tills det primära tecken som inte är mellanslag hittas.

I allmänhet har ett giltigt heltalargument för wcstoul () -funktionen följande form:

 (blanksteg) (- | +) (0 | 0x) (alfanumeriska tecken)

Från och med denna karaktär tar det så många tecken som möjligt som bildar en giltig helhetsrepresentation och omvandlar dem till ett osignerat långt int-värde.

Oavsett vad som är kvar av strängen efter att den sista giltiga karaktären ignoreras och har ingen inverkan på resultatet.

Exempel 3: wcstoul () -funktion för ledande blanksteg och ogiltig 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ör programmet blir resultatet:

 205Ϣx till osignerad lång int med bas-5 = 10 ändsträng = 5Ϣx xƜz201 till osignerad lång int med bas-12 = 0 slutsträng = xƜz201

Om basen är 0 bestäms den numeriska basen automatiskt genom att titta på strängens format. Om prefixet är 0 är basen oktal (8). Om prefixet är 0x eller 0X är basen hexadecimal (16), annars är basen decimal (10).

Exempel 4: wcstoul () -funktion med bas 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ör programmet blir resultatet:

 0539Ẅ till osignerad lång int med bas-0 = 43 ändsträng = 9Ẅ 0xa31 ע till osignerad lång int med bas-0 = 2609 slutsträng = ע 119x ؏ till osignerad lång int med bas-0 = 119 slutsträng = x ؏

Intressanta artiklar...