У C++ перетворення цілих чисел у рядки чи чисел у рядки чи навпаки насправді є великою зміною парадигми. Загалом чи точніше у змагальному програмуванні є багато випадків, коли нам потрібно перетворити число на рядок або рядок на число. Давайте розглянемо деякі методи перетворення цілого чи числа в рядок.
Перетворення числа на рядок у C++
Є 4 основні методи перетворення числа в рядок , які є такими:
- Використання to_string() Використання string Stream Використання функції sprintf() Використання boost lexical cast
Спосіб 1: Використання to_string()
The to_string() Функція може бути використана для перетворення цілого числа, значень з плаваючою комою або будь-якого числа в рядок. Ця функція приймає число (яке може бути будь-яким типом даних) і повертає число як потрібний рядок.
Синтаксис :
string to_string (int val );>
Параметри:
- вал – Будь-яке числове значення.
Повернене значення:
- Рядковий об’єкт, що містить представлення значення у вигляді послідовності символів.
приклад :
C++
// C++ code to demonstrate 'to_string()' method> // to convert number to string.> #include> #include // for string and to_string()> using> namespace> std;> // Driver Code> int> main()> {> >// Declaring integer> >int> i_val = 20;> >// Declaring float> >float> f_val = 30.50;> >// Conversion of int into string using> >// to_string()> >string stri = to_string(i_val);> >// Conversion of float into string using> >// to_string()> >string strf = to_string(f_val);> >// Displaying the converted strings> >cout <<>'The integer in string is : '>;> >cout << stri << endl;> >cout <<>'The float in string is : '>;> >cout << strf << endl;> >return> 0;> }> |
>
>Вихід
The integer in string is : 20 The float in string is : 30.500000>
Часова складність: O(n)
Допоміжний простір: O(n)
Спосіб 2: Використання потоків рядків
У цьому методі рядковий потік оголошує об’єкт потоку, який спочатку вставляє число як потік в об’єкт, а потім використовує str() щоб стежити за внутрішнім перетворенням числа в рядок.
приклад:
C++
// C++ code to demonstrate string stream method> // to convert number to string.> #include> #include // for string streams> #include // for string> using> namespace> std;> int> main()> {> >int> num = 2016;> >// declaring output string stream> >ostringstream str1;> >// Sending a number as a stream into output> >// string> >str1 << num;> >// the str() converts number into string> >string geek = str1.str();> >// Displaying the string> >cout <<>'The newly formed string from number is : '>;> >cout << geek << endl;> >return> 0;> }> |
>
>Вихід
The newly formed string from number is : 2016>
Часова складність: O(n)
Допоміжний простір: O(n)
Спосіб 3. Використання функції sprintf().
sprintf() функція зберігає вихідні дані в буфері char, указаному у функції, замість того, щоб друкувати вихідні дані на консолі.
C++
// C++ Program to illustrate the use of sprintf() for number> // to string conversion> #include> using> namespace> std;> int> main()> {> >// any num> >int> n = 12234;> >// string buffer> >char> str[1000];> >// sprintf() to print num to str buffer> >sprintf>(str,>'%d'>, n);> >cout <<>'the string is : '> << str;> >return> 0;> }> // this code is contributed by shivanisingh> |
java містить підрядок
>
>Вихід
the string is : 12234>
Часова складність: O(n)
Допоміжний простір: O(n)
Спосіб 4: Використання посиленого лексичного приведення
Подібно до перетворення рядків, функція lexical_cast() залишається незмінною, але в « посилити лексичний склад список аргументів часу змінюється на lexical_cast(numeric_var).
приклад:
C++
// C++ code to demonstrate 'lexical_cast()' method> // to convert number to string.> #include // for lexical_cast()> #include> #include // for string> using> namespace> std;> // Driver Code> int> main()> {> >// Declaring float> >float> f_val = 10.5;> >// Declaring int> >int> i_val = 17;> >// lexical_cast() converts a float into string> >string strf = boost::lexical_cast(f_val);> >// lexical_cast() converts a int into string> >string stri = boost::lexical_cast(i_val);> >// Displaying string converted numbers> >cout <<>'The float value in string is : '>;> >cout << strf << endl;> >cout <<>'The int value in string is : '>;> >cout << stri << endl;> >return> 0;> }> |
>
>Вихід
The float value in string is : 10.5 The int value in string is : 17>
Часова складність : O(n)
Допоміжний простір : O(n)