Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
C++ первый курс Alex Жив / C++ Перший курс / old / Lections 1 trim / Додаток до лекції №8 Рядки .doc
Скачиваний:
26
Добавлен:
23.03.2015
Размер:
199.17 Кб
Скачать

Перетворення рядка в число Функції atoi і atol

Синтаксис функцій atoi і atol має вигляд:

int atoi ( const char* ptr ) ;

int atol ( const char* ptr ) ;

Ці функції перетворять Ascilz-Рядок символів, на який вказує ptr, у число типу int і long відповідно. Робота цих функцій в 32нрозрядній моделі пам'яті не відрізняється. Якщо преутворене число перевищує діапазон значень типу int, функція поверне непередбачене значення. Наприклад:

char S [41] = "400000" ; // оголошення й ініціалізація рядка

int n ; // оголошення змінної типу int

n = atoi ( S ) ; // ініціалізація змінної значенням перетвореного рядка

cout << "n=" << n << '\n' ; // виводить на екран “400000”

strcat ( S, "0000" ) ; // додає в кінець рядка чотири нулі

long m; // оголошення змінної типу long

m = atoll ( S ) ; // ініціалізація змінної значенням перетвореного рядка

cout << "m=" << m << '\n' ; // виводить на екран “-294967296”

Функції _atoi64

Синтаксис функцій _atoi64 має вигляд:

__int64 _atoi64 ( const char* ptr ) ;

Ця функція перетворять Ascilz-Рядок символів, на який вказує ptr, у число типу __int64. Якщо преутворене число перевищує діапазон значень типу __int64, функція поверне непередбачене значення. Наприклад:

char S[41] = "7000000000" ; // оголошення й ініціалізація рядка

__int64 h ; // оголошення змінної типу __int64

h = _atoi64(S) ; // ініціалізація змінної значенням перетвореного рядка

printf ( "%I64d", h ) ; // виводить на екран “7000000000”

Функції atof

Функція atof, певна як

double atof(const char* ptr)

виконує перетворення Asciiz-Рядка в число із плаваючою крапкою типу double. Рядок символів повинна бути представлена з урахуванням формату:

[пробіли][знак][цифри][.][цифри][е|Е[знак]цифри],

де

пробіли – послідовність пробілів або табуляторів;

знак – символ '+' або '' ;

цифри – десяткові цифри;

е|Е – символ показника ступені.

Перетворення символів припиняється, як тільки знайдений перший неконвертований символ або досягнутий кінець рядка. Приклад використання функції atof:

char S [41] = "12345e66" ; // оголошення й ініціалізація рядка

double d ; // оголошення змінної типу double

d = atof ( S ) ; // ініціалізація змінної значенням перетвореного рядка

cout << "d=" << d << '\n' ; // виводить на екран "d=1.2345e+070"

Функції strtod

Функція strtod перетворить рядок символів у число із плаваючою крапкою. Її синтаксис має такий вигляд:

double strtod ( const char *s, char **endptr) ;

Ця функція так само, як і функція atof, перетворить рядок, на який вказує s, у число типу double, з тим лише відмінністю, що у випадку припинення конвертування рядка повертає вказівник endptr на перший непреобразуемый символ. Це дозволяє організувати надалі обробку частини, що залишився, рядка. Приклад використання функції strtod:

char S [41] = "12345f66" ; // оголошення й ініціалізація рядка

double d ; // оголошення змінної типу double

char* Err ; // оголошення вказівника на рядок помилки

d = strtod ( S, &Err) ; // ініціалізація змінної значенням перетвореного рядка

// передача по вказівникові рядка помилки

cout << "d=" << d << '\n' ; // виводить на екран " d = 12345 "

cout << "Error=" << Err << '\n' ; // виводить на екран " Error = f66 "