c string conversion functions
Този урок покрива функциите за преобразуване на низове C ++, които могат да се използват за конвертиране на низа в int & double и int в низ и т.н.:
безплатен частен сървър
Често се преобразува низ в числа като цяло число и удвояване, когато разработваме C ++ приложения.
Тази тема обхваща функциите, които могат да се използват за ефективно преобразуване на низовете в int & double и числови стойности в низ.
=> Прочетете Популярната серия за обучение на C ++ тук.
Какво ще научите:
Функции за преобразуване на низове на C ++
Когато програмираме приложения, използващи C ++, става необходимо да конвертираме данни от един тип в друг. Преобразуването на данни трябва да бъде такова, че изобщо да не се губят данни, когато преобразуваме съществуващите данни в нов тип. Това е особено вярно, когато преобразуваме данните от низове в числа и обратно.
В този урок ще обсъдим различните функции за конвертиране на обект std :: string в числови типове данни, включително цяло число и двойно.
Преобразуване на низ в числови типове в C ++
Като цяло има два често използвани метода за преобразуване на низ в числа в C ++.
- Използване на функции stoi и atoi, които се репликират за всички числови типове данни.
- Използване на клас streamstream.
Нека обсъдим подробно всеки метод.
Използване на функции stoi и atoi
класът std :: string поддържа различни функции за преобразуване на низ в цяло число, дълъг, двоен, плаващ и др. Функциите за преобразуване, поддържани от std :: string, са разделени по таблици, както следва:
Функция | Описание |
---|---|
стоящ стол стол | Преобразува низ в цяло число (включително дълги и дълги дълги типове). |
atoi атол атол | Преобразува байтов низ в цяло число (включително дълги и дълги дълги типове). |
стоеше прах откраднат | Преобразува байтов низ в стойности с плаваща запетая (включително типове float, double и long double). |
стол задържане | Преобразува байтов низ в неподписано цяло число (включително неподписани дълги и неподписани дълги дълги типове). |
Забележка: С изключение на функциите за преобразуване на байтов низ (atoi), всички останали функции за преобразуване присъстват от C ++ 11 нататък. Сега ще обсъдим функциите за преобразуване за преобразуване на низ в int и низ в удвояване.
String to 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 << '
'; }
Изход:
stoi(“53”) is 53
stoi(“3.142”) is 3
stoi („31477 с char“) е 31477
име на операционната система в компютъра
В горната програма използвахме функцията stoi с три различни низа. Имайте предвид, че докато преобразува данните от низа в целочислена стойност, функцията изхвърля празните пространства или други знаци.
Следователно в случая на mystr2 (3.142) функцията изхвърля всичко след десетичната запетая. По същия начин, в случая на mystr3 („31477 с char“), беше взето предвид само номерът. Другото съдържание на низа беше изхвърлено.
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 с char”) е 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 с char“) е 23446
Горната програма демонстрира използването на функцията “stod”. Изходът показва преобразуваните двойни стойности на посочените низове.
Използване на Classstream клас
Използването на клас 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
В горната програма виждаме, че сме декларирали низ обект. След това декларираме обект на низ и предаваме низа на този обект, така че низът да се преобразува в обект на поток. След това този низ обект се предава на целочислена стойност с помощта на оператор ‘>>’, който преобразува обекта на низа в цяло число.
По същия начин сме преобразували низа в двоен. Така че, докато операторът “>>” поддържа типа данни, ние можем да преобразуваме низ във всеки тип данни, като използваме обект на поток.
Конвертиране на 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
какво може да отвори json файл
Тук имаме две променливи, всяка от тип integer и float. След това извикваме метода to_string два пъти с аргумент integer и float и конвертираме двете стойности в низови стойности. Накрая показваме преобразуваните стойности.
Имайте предвид, че преобразуването на стойността с плаваща запетая в низа може да даде неочаквани резултати, тъй като броят на значимите цифри може да е нула с метода to_string.
Използване на Classstream клас
Използвайки клас 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
Низът, образуван от double е: 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 (). Също така обсъдихме някои от функциите и методите на низовия клас, които ни помагат да направим споменатите преобразувания.
Препоръчително четене = >> Преобразуване на String в Integer в Java и Методи за конвертиране на Int в String в Java
В следващия урок ще научим функциите за преобразуване за типове данни за знаци.
=> Проверете тук уроците за задълбочено обучение за C ++.
Препоръчително четене
- Функции на низовете на Python
- Функции за преобразуване на символи C ++: char в int, char в низ
- Java String с String Buffer и String Builder Tutorial
- Функции на низове в C ++: getline, substring, дължина на низа & More
- C # Преобразуване на низ в Int, използвайки методи за анализиране, конвертиране и опитване
- Функции на низове VBScript: Функции VBScript inStr, заместване, средата и подрязване
- Урок за разделяне на низове на Python
- Инструкция за C # String - Методи за низове с примери за кодове