c string conversion functions
Цей підручник охоплює функції перетворення рядків C ++, які можна використовувати для перетворення рядка в int & double та int у рядок тощо:
Під час розробки додатків на C ++ зазвичай перетворюють рядок на числа, такі як ціле чи подвійне.
Ця тема охоплює функції, які можна використовувати для ефективного перетворення рядків у значення int & double та числових значень у рядок.
=> Ознайомтесь з Популярною серією навчальних програм C ++ тут.
Що ви дізнаєтесь:
Функції перетворення рядків на C ++
Коли ми програмуємо програми, використовуючи C ++, стає необхідним перетворення даних з одного типу на інший. Перетворення даних повинно бути таким, щоб дані не втрачались взагалі, коли ми перетворюємо наявні дані на новий тип. Це особливо актуально, коли ми перетворюємо дані рядків у числа і навпаки.
У цьому підручнику ми обговоримо різні функції для перетворення об'єкта std :: string у числові типи даних, включаючи цілі числа та подвійні.
Перетворити рядок на числові типи в C ++
Загалом існує два загальноприйняті методи перетворення рядка в числа в C ++.
- Використання функцій stoi та atoi, які копіюються для всіх числових типів даних.
- Використання класу stringstream.
Давайте обговоримо кожен метод детально.
Використання функцій stoi та atoi
Клас std :: string підтримує різні функції для перетворення рядка в ціле, довге, подвійне, плаваюче тощо. Функції перетворення, що підтримуються std :: string, складаються з таблиць наступним чином:
Функція | Опис |
---|---|
стоячи stol палантин | Перетворює рядок у ціле число (включаючи довгі та довгі довгі типи). |
атой атол атол | Перетворює байтовий рядок у ціле число (включаючи довгі та довгі довгі типи). |
стояв пил викрадене | Перетворює байтовий рядок у значення з плаваючою комою (включаючи типи з плаваючою, подвійною та довгою подвійною). |
стул стіл | Перетворює байтовий рядок у ціле без знака (включаючи беззнакові довгі та беззнакові довгі довгі типи). |
Примітка: За винятком функцій для перетворення байтового рядка (atoi), усі інші функції перетворення присутні з C ++ 11 і далі. Тепер ми обговоримо функції перетворення для перетворення рядка в int і рядка в подвійний.
як дивитись аніме в Інтернеті безкоштовно -
Рядок до int Використання stoi () та atoi ()
стоячи ()
Прототип функції: stoi (const std :: string & str, std :: size_t * pos = 0, int base = 10);
Параметри:
str => Рядок для перетворення
pos => Адреса цілого числа для збереження кількості оброблених символів; за замовчуванням = 0
база => Основа числа; за замовчуванням = 0
Повернене значення: Ціле число, еквівалентне вказаному рядку.
Винятки: std :: invalid_argument => Якщо перетворення виконати неможливо.
Std :: out_of_range => Якщо перетворене значення виходить за межі діапазону типу результату.
Опис: Функція stoi () приймає рядок як аргумент і повертає ціле число. Це викличе виняток, якщо перетворене значення виходить за межі діапазону або якщо перетворення неможливо виконати.
Візьмемо приклад програмування, щоб краще зрозуміти цю функцію.
#include #include using namespace std; int main() { string mystr1 = '53'; string mystr2 = '3.142'; string mystr3 = '31477 with char'; int strint1 = stoi(mystr1); int strint2 = stoi(mystr2); int strint3 = stoi(mystr3); cout << 'stoi('' << mystr1 << '') is ' << strint1 << '
'; cout << 'stoi('' << mystr2 << '') is ' << strint2 << '
'; cout << 'stoi('' << mystr3 << '') is ' << strint3 << '
'; }
Вихід:
трибуни (“53”) дорівнює 53
трибуни (“3,142”) дорівнює 3
stoi (“31477 з символом”) - 31477
У наведеній вище програмі ми використовували функцію stoi з трьома різними рядками. Зверніть увагу, що під час перетворення рядкових даних у ціле число, функція відкидає пробіли або будь-які інші символи.
Отже, у випадку mystr2 (3.142), функція відкидала все після десяткової коми. Подібним чином, у випадку з mystr3 (“31477 з символом”), враховувалося лише число. Інший вміст рядка було відкинуто.
atoi ()
Прототип функції: int atoi (const char * str);
Параметри: str => Вказівник на рядок байтів, що закінчується нулем.
Повернене значення:
Успіх => Ціле значення, що відповідає аргументу str.
Помилка => Не визначено, якщо перетворене значення виходить за межі діапазону.
0 => Якщо перетворення виконати неможливо.
Опис: Ця функція перетворює байтовий рядок у ціле число. Функція atoi () відкидає будь-які пробіли, поки не зустрічається непробільний символ, а потім приймає символи один за одним, щоб сформувати дійсне цілочисельне представлення, і перетворює його в ціле число.
Приклад функції atoi
#include #include using namespace std; int main() { const char *mystr1 = '24'; const char *mystr2 = '3.142'; const char *mystr3 = '23446 with char'; const char *mystr4 = 'words with 3'; int mynum1 = atoi(mystr1); int mynum2 = atoi(mystr2); int mynum3 = atoi(mystr3); int mynum4 = atoi(mystr4); cout << 'atoi('' << mystr1 << '') is ' << mynum1 << '
'; cout << 'atoi('' << mystr2 << '') is ' << mynum2 << '
'; cout << 'atoi('' << mystr3 << '') is ' << mynum3 << '
'; cout << 'atoi('' << mystr4 << '') is ' << mynum4 << '
'; }
Вихід:
atoi ('24') дорівнює 24
atoi (“3.142”) дорівнює 3
atoi ('23446 з символом') - 23446
atoi ('слова з 3') дорівнює 0
Як показано у наведеній вище програмі, функція atoi приймає байтовий рядок як аргумент і перетворює його на ціле число. Пробіли або будь-які інші символи відкидаються. Якщо перетворене значення виходить за межі діапазону, тоді повертається 0.
Рядок для подвоєння за допомогою stod ()
Прототип функції: stod (const std :: string & str, std :: size_t * pos = 0);
Параметри:
str => Рядок для перетворення
pos => Адреса цілого числа для збереження кількості оброблених символів; за замовчуванням = 0
Повернене значення: Подвійне значення, еквівалентне вказаному рядку.
Винятки:
std :: invalid_argument => Якщо перетворення виконати неможливо.
std :: out_of_range => Якщо перетворене значення виходить за межі діапазону типу результату.
Опис: Ця функція перетворює рядок у значення з плаваючою комою. Функція stod () відкидає будь-які пробіли, поки не зустрічається непробільний символ, а потім приймає символи один за одним, щоб сформувати дійсне подання числа з плаваючою точкою, і перетворює його в плаваючу крапку.
Давайте подивимось приклад, що демонструє цю функцію.
#include #include using namespace std; int main() { const char *mystr1 = '24'; const char *mystr2 = '3.142'; const char *mystr3 = '23446 with char'; double mynum1 = stod(mystr1); double mynum2 = stod(mystr2); double mynum3 = stod(mystr3); cout << 'stod('' << mystr1 << '') is ' << mynum1 << '
'; cout << 'stod('' << mystr2 << '') is ' << mynum2 << '
'; cout << 'stod('' << mystr3 << '') is ' << mynum3 << '
'; }
Вихід:
stod (“24”) - це 24
stod (“3.142”) - 3.142
stod (“23446 з символом”) - 23446
Наведена вище програма демонструє використання функції “stod”. Вихідні дані вказують перетворені подвійні значення зазначених рядків.
Використання класу stringstream
Використання класу stringstream - це найпростіший спосіб перетворити значення рядків у числові значення.
Ми будемо детально вивчати клас струнних потоків у наступних підручниках. Нижче наведено програму на C ++, яка демонструє перетворення рядка в числові значення.
#include #include using namespace std; int main() { string str = '2508'; stringstream sstream(str); int num = 0; sstream >> num; double dNum=0.0; string doublestr = '3.142'; stringstream dstream(doublestr); dstream >>dNum; cout << 'Value of num : ' << num< Вихід:
Значення num: 2508
Значення dNum: 3.142
У наведеній вище програмі ми бачимо, що ми оголосили рядовий об'єкт. Потім ми оголошуємо об'єкт stringstream і передаємо рядок цьому об'єкту, щоб рядок був перетворений в об'єкт stringstream. Потім цей об’єкт рядкового потоку передається у цілочисельне значення за допомогою оператора ‘>>’, який перетворює об’єкт потокового рядка у ціле число.
Подібним чином ми також перетворили рядок у подвійний. Отже, поки оператор “>>” підтримує тип даних, ми можемо перетворити рядок у будь-який тип даних, використовуючи об’єкт stringstream.
Перетворити int на рядок в C ++
Ми також можемо перетворити числові значення у рядкові значення. Існує два методи перетворення числових значень у значення рядків, і ми обговоримо їх нижче.
Використання функції to_string ()
Прототип функції: std :: string to_string (значення типу);
Параметри: value => Числове значення для перетворення
Повернене значення: Значення рядка, що містить перетворене значення.
Виняток: може кинути std :: bad_alloc
Опис: Ця функція to_string () перетворює числове значення, передане як аргумент, у тип рядка і повертає рядок.
Давайте подивимось приклад цієї функції за допомогою програми на C ++.
#include #include // used for string and to_string() using namespace std; int main() { int int_val = 20; float flt_val = 30.50; string str_int = to_string(int_val); string str_float = to_string(flt_val); cout << 'The string representation of integer : '; cout << str_int << endl; cout << 'The string representation of float : '; cout << str_float << endl; return 0; }
Вихід:
Рядкове представлення цілого числа: 20 Рядове представлення float: 30.500000
Тут ми маємо дві змінні, кожна з яких має ціле число та плаваючу. Потім ми двічі викликаємо метод to_string із цілим числом та аргументом float і перетворюємо обидва значення у значення рядків. Нарешті, ми відображаємо перетворені значення.
Зверніть увагу, що перетворення значення з плаваючою комою у рядок може дати несподівані результати, оскільки кількість значущих цифр може бути нульовою за допомогою методу to_string.
Використання класу stringstream
Використовуючи клас stringstream, stringstream спочатку оголошує об'єкт потоку, який вставляє числове значення як потік в об'єкт. Потім він використовує функцію “str ()” для внутрішнього перетворення числового значення у рядок.
Приклад:
#include #include #include using namespace std; int main() { int num = 26082019; double num_d = 3.142; ostringstream mystr; ostringstream my_dstr; mystr << num; string resultstr = mystr.str(); my_dstr << num_d; string d_str = my_dstr.str(); cout << 'The string formed from integer is : '; cout << resultstr << endl; cout << 'The string formed from double is : '; cout << d_str << endl; return 0; } #include #include #include using namespace std; int main() { int num = 26082019; double num_d = 3.142; ostringstream mystr; ostringstream my_dstr; mystr << num; string resultstr = mystr.str(); my_dstr << num_d; string d_str = my_dstr.str(); cout << 'The string formed from integer is : '; cout << resultstr << endl; cout << 'The string formed from double is : '; cout << d_str << endl; return 0; }
Вихід:
Рядок, утворений із цілого числа: 26082019
Рядок, утворений з подвійного, становить: 3.142
У цьому списку ми визначили ціле число та подвійне значення. Тоді ми маємо об’єкт ostringstream, за допомогою якого ми перетворюємо числове значення на об’єкт stringstream. Це використовує<<’ operator. Next, we use the str() method on a stringstream object to convert it to a string.
Висновок
У цьому підручнику ми обговорили функції перетворення, які перетворюють рядок у числові типи та числові типи назад у рядок. Ми детально бачили функції та приклади функції stoi (), stod (), atoi (), to_string (). Ми також обговорили деякі функції та методи класу stringstream, які допомагають нам робити згадані перетворення.
Рекомендована література = >> Перетворити рядок на ціле в Java і Методи перетворення Int в String на Java
У нашому наступному підручнику ми вивчимо функції перетворення типів даних символів.
=> Ознайомтеся з поглибленими навчальними посібниками з C ++ тут.
Рекомендована література
- Функції рядка Python
- Функції перетворення символів C ++: char в int, char в рядок
- Рядок Java із підручником для буфера рядків та побудови рядків
- Функції рядка в C ++: getline, substring, length length & More
- C # Перетворення рядка в Int за допомогою методів Parse, Convert & TryParse
- Функції рядків VBScript: Функції VBScript inStr, Заміна, Середнє та Обрізання
- Підручник з розділення рядків Python
- Підручник з рядків C # - Рядові методи з прикладами коду