C ++ strtoull () - C ++ Standard Library

Fungsi strtoull () di C ++ menafsirkan konten string sebagai bilangan integral dari basis yang ditentukan dan mengembalikan nilainya sebagai int panjang yang tidak bertanda.

Fungsi strtoull () di C ++ menafsirkan konten string sebagai bilangan integral dari basis yang ditentukan dan mengembalikan nilainya sebagai int panjang yang tidak bertanda.

Fungsi ini juga menyetel penunjuk untuk menunjuk ke karakter pertama setelah karakter terakhir yang valid dari string jika ada, jika tidak penunjuk disetel ke nol.

 Untuk basis 10 dan string "41aac" Bagian numerik yang valid -> 42 Karakter pertama setelah bagian numerik yang valid -> a

strtoull () prototipe (Pada standar C ++ 11)

 unsigned long int strtoull panjang (const char * str, char ** end, int base);

Fungsi strtoull () mengambil string, pointer ke karakter dan nilai integer - basis sebagai parameternya, mengartikan konten string sebagai bilangan integral dari basis yang diberikan dan mengembalikan nilai int panjang panjang yang tidak ditandatangani.

Fungsi ini didefinisikan dalam file header.

strtoull () Parameter

  • str: String yang merepresentasikan bilangan integral.
  • end:Referensi ke objek jenis char * yang telah dialokasikan. Nilai akhir ditetapkan oleh fungsi ke karakter berikutnya dalam str setelah karakter valid terakhir. Parameter ini juga bisa menjadi penunjuk nol, dalam hal ini tidak digunakan.
  • base:Basis dari nilai integral. Himpunan nilai yang valid untuk basis adalah (0, 2, 3,…, 35, 36).

strtoull () Mengembalikan nilai

Fungsi strtoull () mengembalikan:

  • nilai int long long unsigned (yang diubah dari string).
  • 0 jika tidak ada konversi valid yang dapat dilakukan.

Contoh 1: Bagaimana fungsi strtoull () bekerja?

 #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; )

Saat Anda menjalankan program, hasilnya adalah:

 Nilai string = 231ax12 Unsigned Long long int value = 231 End String = ax12 Nilai string = 231 Unsigned Long long int value = 231 Null pointer

Nilai integer yang valid untuk fungsi strtoull () terdiri dari:

  • Tanda + atau - opsional.
  • Awalan 0 untuk basis oktal (berlaku hanya jika basis = 8 atau 0).
  • Awalan 0x atau 0X untuk basis heksadesimal (hanya berlaku jika basis = 16 atau 0).
  • Urutan angka dan / atau huruf (jika basis lebih besar dari 10).

Jika argumen berisi tanda minus (-) di awal, bilangan negatif secara implisit dikonversi ke tipe int panjang tak bertanda tangan yang merupakan bilangan positif.

Nilai yang valid untuk parameter base adalah (0, 2, 3,…, 35, 36). Himpunan angka yang valid untuk basis 2 adalah (0, 1), untuk basis 3 adalah (0, 1, 2) dan seterusnya. Untuk basis mulai dari 11 hingga 36, ​​angka yang valid menyertakan huruf. Himpunan digit yang valid untuk basis 11 adalah (0, 1,…, 9, A, a), untuk basis 12 adalah (0, 1,…, 9, A, a, B, b) dan seterusnya.

Contoh 2: fungsi strtoull () dengan basis yang berbeda

 #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; )

Saat Anda menjalankan program, hasilnya adalah:

 148ax ke Unsigned Long Long Int dengan base-5 = 9 End String = 8ax 148ax ke Unsigned Long Long Int dengan base-15 = 4405 End String = x 148ax ke Unsigned Long Long Int dengan base-35 = 1682308 End String =

Fungsi strtoull () mengabaikan semua karakter spasi putih sebelum karakter non-spasi putih utama ditemukan.

Secara umum, argumen integer yang valid untuk fungsi strtoull () memiliki bentuk berikut:

 (spasi) (- | +) (0 | 0x) (karakter alfanumerik)

Kemudian, mulai dari karakter ini, dibutuhkan sebanyak mungkin karakter yang membentuk representasi integer yang valid dan mengubahnya menjadi nilai int yang panjang dan panjang. Apa pun yang tersisa dari string setelah karakter valid terakhir diabaikan dan tidak berpengaruh pada hasil.

Contoh 3: fungsi strtoull () untuk memimpin spasi kosong, konversi minus dan tidak valid

 #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; )

Saat Anda menjalankan program, hasilnya adalah:

 25axbz ke Unsigned Long Long Int dengan base-11 = 307 End String = xbz -110bcd ke Unsigned Long Long Int dengan base-2 = 18446744073709551610 End String = bcd ax110.97 ke Unsigned Long Long Int dengan base-10 = 0 End String = ax110.97

Jika basisnya 0, basis numerik ditentukan secara otomatis dengan melihat format string. Jika awalannya 0, maka basisnya adalah oktal (8). Jika awalannya 0x atau 0X, basisnya adalah heksadesimal (16), jika tidak basisnya adalah desimal (10).

Contoh 4: Fungsi strtoull () dengan basis 0

 #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; )

Saat Anda menjalankan program, hasilnya adalah:

 017x ke Unsigned Long Long Int dengan base-0 = 15 End String = x 0x1cg ke Unsigned Long Long Int dengan base-0 = 28 End String = g 70sxz ke Unsigned Long Long Int dengan base-0 = 70 End String = sxz

Artikel yang menarik...