C ++ wcstoul () - C ++ стандартна библиотека

Функцията wcstoul () в C ++ интерпретира съдържанието на широк низ като неподписан интегрален номер на посочената основа и връща стойността му като неподписан дълъг int.

Функцията wcstoul () също така задава указател, който да сочи към първия символ след последния валиден символ на широкия низ, ако има такъв, в противен случай указателят е зададен за нула.

 За основа 10 и широкия низ L "29hi $" Валидна числова част -> 29 Първи знак след валидна цифрова част -> h

Той се определя в заглавния файл.

прототип на wcstoul ()

 неподписан дълъг wcstoul (const wchar_t * str, wchar_t ** str_end, int base);

Функцията wcstoul () приема за свой параметър широк низ str, указател към широк символ str_end и цяло число - база.

След това интерпретира съдържанието на широкия низ като неподписан интегрален номер на дадената база и връща неподписана дълга int стойност.

wcstoul () Параметри

  • str: Широк низ, представящ неподписано интегрално число.
  • str_end: указател към указател към широк символ. Стойността на str_end се задава от функцията на следващия символ в str след последния валиден символ. Този параметър може да бъде и нулев указател, в който случай той не се използва.
  • основа: Основата на интегралната стойност. Наборът от валидни стойности за база е (0, 2, 3,…, 35, 36).

wcstoul () Върната стойност

Функцията wcstoul () връща:

  • неподписана дълга int стойност (която се преобразува от низа).
  • 0, ако не може да се извърши валидно преобразуване.

Пример 1: Как работи функцията wcstoul ()?

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

Когато стартирате програмата, изходът ще бъде:

 Стойност на низа = 101aa ᚶ Неподписана стойност Long Int = 101 Краен низ = aa value Стойност на низа = 59 Неподписана стойност Long Int = 59 Краен низ =

Валидна целочислена стойност за функцията wcstoul () се състои от:

  • Незадължителен знак + или -.
  • Префикс 0 за осмична основа (важи само когато основа = 8 или 0).
  • Префикс 0x или 0X за шестнадесетична основа (важи само когато base = 16 или 0).
  • Поредица от цифри и / или азбуки (ако основата е по-голяма от 10).

Ако аргументът съдържа знак минус (-) в началото, отрицателното число се преобразува неявно в неподписан дълъг тип int, който е положително число.

Валидните стойности за базата на параметрите са (0, 2, 3, …, 35, 36). Наборът от валидни цифри за основа 2 е (0, 1), за основа 3 е (0, 1, 2) и т.н. За бази, започващи от 11 до 36, валидните цифри включват азбуки.

Наборът от валидни цифри за база 11 е (0, 1, …, 9, A, a), за база 12 е (0, 1, …, 9, A, a, B, b) и т.н.

Пример 2: функция wcstoul () с различни бази

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

Когато стартирате програмата, изходът ще бъде:

 311bzϾϿ към Неподписан дълъг Int с base-5 = 81 краен низ = bzϾϿ 311bzϾϿ до Неподписан дълъг Int с base-12 = 5351 Краен низ = zϾϿ 311bzϾϿ към неподписан Long Int с base-36 = 5087231 Краен низ = ϾϿ

Функцията wcstoul () игнорира всички водещи интервали, докато не бъде намерен основният небел интервал.

По принцип валиден аргумент от цяло число за функцията wcstoul () има следната форма:

 (празно пространство) (- | +) (0 | 0x) (буквено-цифрови знаци)

След това, започвайки от този знак, са необходими колкото се може повече символи, които формират валидно цяло число и ги преобразуват в неподписана дълга int стойност.

Всичко, което е останало от низа след последния валиден знак, се игнорира и няма ефект върху резултата.

Пример 3: Функция wcstoul () за водене на празно пространство и невалидно преобразуване

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

Когато стартирате програмата, изходът ще бъде:

 205Ϣx до Unsigned Long Int с base-5 = 10 End String = 5Ϣx xƜz201 до Unsigned Long Int с base-12 = 0 End String = xƜz201

Ако основата е 0, числовата база се определя автоматично, като се гледа форматът на низа. Ако префиксът е 0, основата е осмична (8). Ако префиксът е 0x или 0X, основата е шестнадесетична (16), в противен случай основата е десетична (10).

Пример 4: Функция wcstoul () с основа 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; )

Когато стартирате програмата, изходът ще бъде:

 0539Ẅ към Unsigned Long Int с base-0 = 43 End String = 9Ẅ 0xa31 ע до Unsigned Long Int с base-0 = 2609 End String = ע 119x ؏ до Unsigned Long Int с base-0 = 119 End String = x ؏

Интересни статии...