C ++ wcstoull () - Perpustakaan Standard C ++

Fungsi wcstoull () dalam C ++ menafsirkan kandungan rentetan lebar sebagai nombor integral yang tidak ditandatangani dari pangkalan yang ditentukan dan mengembalikan nilainya sebagai int panjang yang tidak ditandatangani.

Fungsi wcstoull () juga menetapkan penunjuk untuk menunjuk ke watak pertama setelah watak terakhir yang sah dari rentetan lebar jika ada, jika tidak, penunjuk diatur ke nol.

 Untuk asas 10 dan tali lebar L "29hi $" Bahagian angka yang sah -> 29 Aksara pertama selepas bahagian angka yang sah -> h

Ia ditakrifkan dalam fail tajuk.

prototaip wcstoull ()

 wcstoull panjang yang tidak ditandatangani (const wchar_t * str, wchar_t ** str_end, int base);

Fungsi wcstoull () mengambil str string lebar, penunjuk ke karakter lebar str_end dan nilai integer - asas sebagai parameternya.

Ia kemudian menafsirkan kandungan rentetan lebar sebagai nombor tidak terpisahkan dari pangkalan yang diberikan dan mengembalikan nilai int panjang yang tidak ditandatangani.

wcstoull () Parameter

  • str: Rentetan lebar yang mempunyai representasi nombor integer yang tidak ditandatangani
  • str_end: Penunjuk ke penunjuk ke watak yang luas. Nilai str_end ditetapkan oleh fungsi ke watak seterusnya dalam str setelah watak terakhir yang sah. Parameter ini juga dapat menjadi penunjuk nol, dalam hal ini tidak digunakan.
  • asas: Asas nilai kamiran. Kumpulan nilai yang sah untuk asas adalah (0, 2, 3,…, 35, 36).

wcstoull () Nilai pulangan

Fungsi wcstoull () mengembalikan:

  • nilai int panjang yang tidak ditandatangani (yang ditukarkan dari rentetan).
  • 0 jika tiada penukaran yang sah dapat dilakukan.

Contoh 1: Bagaimana fungsi wcstoull () berfungsi?

 #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 long value; int base = 10; value = wcstoull(str1, &end, base); wcout << L"String value = " << str1 << endl; wcout << L"Unsigned Long Long Int value = " << value << endl; wcout << L"End String = " << end << endl; value = wcstoull(str2, &end, base); wcout << L"String value = " << str2 << endl; wcout << L"Unsigned Long Long Int value = " << value << endl; wcout << L"End String = " << end << endl; return 0; )

Semasa anda menjalankan program, outputnya adalah:

 Nilai rentetan = 101aa ᚶ Nilai Long Long Int yang tidak ditandatangani = 101 String Akhir = aa value Nilai rentetan = 59 Nilai Long Long Int yang tidak ditandatangani = 59 String Akhir =

Nilai integer yang sah untuk fungsi wcstoull () terdiri daripada:

  • Tanda + atau - pilihan.
  • Awalan 0 untuk asas oktal (hanya berlaku apabila asas = 8 atau 0).
  • Awalan 0x atau 0X untuk asas heksadesimal (hanya berlaku apabila asas = 16 atau 0).
  • Urutan digit dan / atau huruf (jika asasnya lebih besar daripada 10).

Sekiranya argumen mengandungi tanda tolak (-) pada awalnya, nombor negatif secara implisit ditukar menjadi jenis int panjang yang tidak ditandatangani yang merupakan nombor positif.

Nilai yang sah untuk asas parameter adalah (0, 2, 3,…, 35, 36). Satu set digit yang sah untuk asas 2 adalah (0, 1), untuk asas 3 adalah (0, 1, 2) dan seterusnya. Untuk asas bermula dari 11 hingga 36, ​​digit yang sah termasuk huruf.

Kumpulan digit yang sah untuk asas 11 adalah (0, 1,…, 9, A, a), untuk asas 12 ialah (0, 1,…, 9, A, a, B, b) dan sebagainya.

Contoh 2: fungsi wcstoull () dengan pangkalan yang berbeza

 #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 Long Int with base-5 = " << wcstoull(str, &end, 5) << endl; wcout << L"End String = " << end << endl << endl; wcout << str << L" to Unsigned Long Long Int with base-12 = " << wcstoull(str, &end, 12) << endl; wcout << L"End String = " << end << endl << endl; wcout << str << L" to Unsigned Long Long Int with base-36 = " << wcstoull(str, &end, 36) << endl; wcout << L"End String = " << end << endl << endl; return 0; )

Semasa anda menjalankan program, outputnya adalah:

 311bzϾϿ ke Long Long Int yang tidak ditandatangani dengan asas-5 = 81 End String = bzϾϿ 311bzϾϿ ke Long Long Int yang tidak ditandatangani dengan base-12 = 5351 End String = zϾϿ 311bzϾϿ ke Long Long Int yang tidak ditandatangani dengan asas-36 = 5087231 End String = ϾϿ

Fungsi wcstoull () mengabaikan semua watak ruang kosong sehingga watak bukan ruang kosong utama dijumpai.

Secara umum, argumen integer yang sah untuk fungsi wcstoull () mempunyai bentuk berikut:

 (ruang kosong) (- | +) (0 | 0x) (aksara alfanumerik)

Kemudian, bermula dari watak ini, diperlukan sebanyak mungkin watak yang membentuk perwakilan bilangan bulat yang sah dan mengubahnya menjadi nilai int panjang yang tidak ditandatangani. Apa sahaja yang tersisa dari rentetan setelah watak yang terakhir terakhir diabaikan dan tidak memberi kesan pada hasilnya.

Contoh 3: fungsi wcstoull () untuk ruang kosong terkemuka dan penukaran tidak sah

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

Semasa anda menjalankan program, outputnya adalah:

 205Ϣx ke Long Long Int yang tidak ditandatangani dengan asas-5 = 10 End String = 5Ϣx xƜz201 ke Long Long Int yang tidak ditandatangani dengan base-12 = 0 End String = xƜz201

Sekiranya asasnya 0, asas angka ditentukan secara automatik dengan melihat format rentetan. Sekiranya awalan adalah 0, asasnya adalah oktal (8). Sekiranya awalan adalah 0x atau 0X, asasnya adalah heksadesimal (16), jika tidak, asasnya adalah perpuluhan (10).

Contoh 4: fungsi wcstoull () dengan asas 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 Long Int with base-0 = " << wcstoull(L"0539u1e84", &end, 0) << endl; wcout << L"End String = " << end << endl << endl; wcout << L"0xa31u05e2 to Unsigned Long Long Int with base-0 = " << wcstoull(L"0xa31u05e2", &end, 0) << endl; wcout << L"End String = " << end << endl << endl; wcout << L"119xu060f to Unsigned Long Long Int with base-0 = " << wcstoull(L"119xu060f", &end, 0) << endl; wcout << L"End String = " << end << endl << endl; return 0; )

Semasa anda menjalankan program, outputnya adalah:

 0539Ẅ ke Long Long Int yang tidak ditandatangani dengan asas-0 = 43 End String = 9Ẅ 0xa31 ע ke Long Long Int yang tidak ditandatangani dengan base-0 = 2609 End String = ע 119x ؏ ke Long Long Int yang tidak ditandatangani dengan base-0 = 119 End String = x ؏

Artikel menarik...