C ++ strtoull () - C ++ Standart Kitaplığı

C ++ 'daki strtoull () işlevi, bir dizenin içeriğini belirtilen tabanın integral numarası olarak yorumlar ve değerini işaretsiz uzun uzun int olarak döndürür.

C ++ 'daki strtoull () işlevi, bir dizenin içeriğini belirtilen tabanın integral numarası olarak yorumlar ve değerini işaretsiz uzun uzun int olarak döndürür.

Bu işlev, eğer varsa dizenin son geçerli karakterinden sonraki ilk karakteri göstermesi için bir gösterici ayarlar, aksi takdirde gösterici boş olarak ayarlanır.

 10 tabanı ve "41aac" dizisi için Geçerli sayısal bölüm -> 42 Geçerli sayısal bölümden sonraki ilk karakter -> a

strtoull () prototipi (C ++ 11 standardından itibaren)

 işaretsiz uzun uzun int strtoull (const char * str, char ** end, int base);

Strtoull () işlevi, dizge, karaktere bir işaretçi ve parametresi olarak bir tamsayı değeri alır - dizge içeriğini, verilen tabanın integral sayısı olarak yorumlar ve işaretsiz uzun uzun int değeri döndürür.

Bu işlev başlık dosyasında tanımlanmıştır.

strtoull () Parametreler

  • str: Bir integral sayısının temsiline sahip bir dize.
  • end:Char * türünde önceden ayrılmış bir nesneye başvuru. End değeri, işlev tarafından son geçerli karakterden sonraki karaktere dizilir. Bu parametre aynı zamanda bir boş gösterici olabilir, bu durumda kullanılmaz.
  • base:İntegral değerin tabanı. Taban için geçerli değerler kümesi (0, 2, 3,…, 35, 36).

strtoull () Dönüş değeri

Strtoull () işlevi şunu döndürür:

  • işaretsiz uzun int değeri (dizeden dönüştürülür).
  • 0 geçerli bir dönüştürme yapılamazsa.

Örnek 1: strtoull () işlevi nasıl çalışır?

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

Programı çalıştırdığınızda, çıktı:

 Dize değeri = 231ax12 Unsigned Long long int değeri = 231 End String = ax12 String değeri = 231 Unsigned Long long int değeri = 231 Null işaretçisi

Strtoull () işlevi için geçerli bir tamsayı değeri şunlardan oluşur:

  • İsteğe bağlı bir + veya - işareti.
  • Sekizlik taban için 0 öneki (yalnızca taban = 8 veya 0 olduğunda geçerlidir).
  • Onaltılık taban için 0x veya 0X öneki (yalnızca taban = 16 veya 0 olduğunda geçerlidir).
  • Bir dizi rakam ve / veya alfabe (taban 10'dan büyükse).

Bağımsız değişken başında bir eksi (-) işareti içeriyorsa, negatif sayı örtük olarak pozitif bir sayı olan işaretsiz uzun uzun int türüne dönüştürülür.

Parametre tabanı için geçerli değerler (0, 2, 3,…, 35, 36). 2 tabanı için (0, 1), 3 tabanı için (0, 1, 2) vb. 11'den 36'ya başlayan bazlar için, geçerli rakamlar alfabeleri içerir. 11 tabanı için geçerli rakamlar kümesi (0, 1,…, 9, A, a), taban 12 için (0, 1,…, 9, A, a, B, b) vb.

Örnek 2: farklı tabanlara sahip strtoull () işlevi

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

Programı çalıştırdığınızda, çıktı:

 148ax'tan Unsigned Long Long Int ile base-5 = 9 End String = 8ax 148ax'tan Unsigned Long Int ile base-15 = 4405 End String = x 148ax'tan Unsigned Long Long Int ile 35 = 1682308 End String =

Strtoull () işlevi, birincil boşluk olmayan karakter bulunana kadar tüm öndeki boşluk karakterlerini yok sayar.

Genel olarak, strtoull () işlevi için geçerli bir tamsayı bağımsız değişkeni şu biçime sahiptir:

 (boşluk) (- | +) (0 | 0x) (alfanümerik karakterler)

Daha sonra, bu karakterden başlayarak, geçerli bir tamsayı gösterimi oluşturan ve bunları uzun uzun int değerine dönüştüren mümkün olduğunca çok karakter alır. Son geçerli karakterden sonra dizeden geriye kalanlar yok sayılır ve sonuç üzerinde hiçbir etkisi yoktur.

Örnek 3: baştaki boşluk, eksi ve geçersiz dönüştürme için strtoull () işlevi

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

Programı çalıştırdığınızda, çıktı:

 25axbz'den Unsigned Long Int ile base-11 = 307 End String = xbz -110bcd'den Unsigned Long Long Int ile base-2 = 18446744073709551610 End String = bcd ax110.97'den Unsigned Long Long Int ve base-10 = 0 End String = ax110.97

Taban 0 ise, sayısal taban dizenin biçimine bakılarak otomatik olarak belirlenir. Ön ek 0 ise, taban sekizliktir (8). Önek 0x veya 0X ise, taban onaltılık (16), aksi takdirde taban ondalıktır (10).

Örnek 4: 0 tabanlı strtoull () işlevi

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

Programı çalıştırdığınızda, çıktı:

 017x'den Unsigned Long Long Int'e, base-0 = 15 End String = x 0x1cg'den Unsigned Long Int'e, base-0 = 28 End String = g 70sxz'den Unsigned Long Long Int'e, base-0 = 70 End String = sxz

Ilginç makaleler...