Funkcia wcstol () v C ++ interpretuje obsah širokého reťazca ako integrálne číslo zadaného základu a vráti jeho hodnotu ako dlhý int.
Funkcia wcstol () tiež nastaví ukazovateľ tak, aby ukazoval na prvý znak za posledným platným znakom širokého reťazca, ak existuje, inak je ukazovateľ nastavený na hodnotu null.
Je definované v hlavičkovom súbore.
Pre základňu 10 a široký reťazec L "12abc" Platná číselná časť -> 12 Prvý znak za platnou číselnou časťou -> a
prototyp wcstol ()
long wcstol (const wchar_t * str, wchar_t ** str_end, int base);
Funkcia wcstol () vezme široký reťazec, smerník na široký znak a celočíselnú hodnotu - bázu ako svoj parameter, interpretuje obsah širokého reťazca ako celé číslo danej základne a vráti hodnotu long int.
Parametre wcstol ()
- str: Široký reťazec, ktorý má celé číslo.
- str_end: Ukazovateľ na ukazovateľ na široký znak. Hodnota str_end je nastavená funkciou na nasledujúci znak v str za posledným platným znakom. Týmto parametrom môže byť tiež nulový ukazovateľ, v takom prípade sa nepoužije.
- base: Základ celočíselnej hodnoty. Sada platných hodnôt pre základňu je (0, 2, 3,…, 35, 36).
wcstol () Vrátená hodnota
Vráti funkcia wcstol ():
- dlhá hodnota int (ktorá sa prevedie z reťazca).
- 0, ak nie je možné vykonať platný prevod.
Príklad 1: Ako funguje funkcia wcstol ()?
#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; long value; int base = 10; value = wcstol(str1, &end, base); wcout << L"String value = " << str1 << endl; wcout << L"Long Int value = " << value << endl; wcout << L"End String = " << end << endl; value = wcstol(str2, &end, base); wcout << L"String value = " << str2 << endl; wcout << L"Long Int value = " << value << endl; wcout << L"End String = " << end << endl; return 0; )
Po spustení programu bude výstup:
Hodnota reťazca = 101aa ᚶ Hodnota Long Int = 101 Koniec reťazca = aa ᚶ Hodnota reťazca = 59 Hodnota Long Int = 59 Koniec reťazca =
Platná celočíselná hodnota pre funkciu wcstol () pozostáva z:
- Voliteľný znak + alebo -.
- Predpona 0 pre osmičkový základ (platí iba v prípade, že základňa = 8 alebo 0).
- Predpona 0x alebo 0X pre hexadecimálny základ (platí iba v prípade, že základňa = 16 alebo 0).
- Postupnosť číslic a / alebo abecedy (ak je základňa väčšia ako 10).
Platné hodnoty pre základ parametrov sú (0, 2, 3,…, 35, 36). Sada platných číslic pre základňu 2 je (0, 1), pre základňu 3 je (0, 1, 2) atď. Pre základy začínajúce od 11 do 36 zahŕňajú platné číslice abecedy. Sada platných číslic pre základňu 11 je (0, 1, …, 9, A, a), pre základňu 12 je (0, 1, …, 9, A, a, B, b) atď.
Príklad 2: Funkcia wcstol () s rôznymi bázami
#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 Long Int with base-5 = " << wcstol(str, &end, 5) << endl; wcout << L"End String = " << end << endl << endl; wcout << str << L" to Long Int with base-5 = " << wcstol(str, &end, 12) << endl; wcout << L"End String = " << end << endl << endl; wcout << str << L" to Long Int with base-5 = " << wcstol(str, &end, 36) << endl; wcout << L"End String = " << end << endl << endl; return 0; )
Po spustení programu bude výstup:
311bzϾϿ na Long Int so základňou-5 = 81 Koncový reťazec = bzϾϿ 311bzϾϿ na Long Int so základňou-5 = 5351 Koncový reťazec = zϾϿ 311bzϾϿ na Long Int so základňou-5 = 5087231 Koncový reťazec = ϾϿ
Funkcia wcstol () ignoruje všetky vedúce medzery, kým sa nenájde primárny znak bez medzier.
Platný celočíselný argument pre funkciu wcstol () má vo všeobecnosti tento tvar:
(medzery) (- | +) (0 | 0x) (alfanumerické znaky)
Potom, počnúc týmto znakom, trvá čo najviac znakov, ktoré vytvoria platné celočíselné zastúpenie a prevedú ich na dlhú hodnotu int. Čokoľvek, čo zostane z reťazca po poslednom platnom znaku, je ignorované a nemá to žiadny vplyv na výsledok.
Príklad 3: Funkcia wcstol () na vedenie medzery a neplatnú konverziu
#include #include #include using namespace std; int main() ( setlocale(LC_ALL, "en_US.UTF-8"); wchar_t *end; wcout << L" 205u03e2x to Long Int with base-5 = " << wcstol(L" 205u03e2x", &end, 5) << endl; wcout << L"End String = " << end << endl << endl; wcout << L"xu019cz201 to Long Int with base-12 = " << wcstol(L"xu019cz201", &end, 12) << endl; wcout << L"End String = " << end << endl << endl; return 0; )
Po spustení programu bude výstup:
205Ϣx na Long Int so základňou-5 = 10 koncový reťazec = 5Ϣx xƜz201 na Long Int so základňou-12 = 0 koncový reťazec = xƜz201
Ak je báza 0, číselná báza sa určí automaticky pri pohľade na formát reťazca. Ak je predpona 0, základňa je osmičková (8). Ak je predpona 0x alebo 0X, základ je šestnástkový (16), inak je základ desatinný (10).
Príklad 4: funkcia wcstol () so základňou 0
#include #include #include using namespace std; int main() ( setlocale(LC_ALL, "en_US.UTF-8"); wchar_t *end; wcout << L"0539u1e84 to Long Int with base-0 = " << wcstol(L"0539u1e84", &end, 0) << endl; wcout << L"End String = " << end << endl << endl; wcout << L"0xa31u05e2 to Long Int with base-0 = " << wcstol(L"0xa31u05e2", &end, 0) << endl; wcout << L"End String = " << end << endl << endl; wcout << L"119xu060f to Long Int with base-0 = " << wcstol(L"119xu060f", &end, 0) << endl; wcout << L"End String = " << end << endl << endl; return 0; )
Po spustení programu bude výstup:
0539Ẅ na Long Int so základňou-0 = 43 Koncový reťazec = 9Ẅ 0xa31 ע na Long Int so základňou-0 = 2609 Koncový reťazec = ע 119x ؏ na Long Int so základňou-0 = 119 Koncový reťazec = x ؏