En C++, convertir nombres enters en cadenes o convertir nombres en cadenes o viceversa és en realitat un gran canvi de paradigma en si mateix. En general o més concretament en la programació competitiva hi ha molts casos en què hem de convertir un número en una cadena o una cadena en un nombre. Vegem alguns mètodes per convertir un nombre enter o un nombre en una cadena.
Convertint nombre a cadena en C++
N'hi ha 4 mètodes principals per convertir un nombre en una cadena , que són les següents:
- Ús de to_string() Ús de string Stream Ús de la funció sprintf() Ús de boost lexical cast
Mètode 1: utilitzant to_string()
El to_string() La funció es pot utilitzar per convertir un nombre enter, valors de coma flotant o qualsevol nombre en una cadena. Aquesta funció accepta un número (que pot ser qualsevol tipus de dades) i retorna el número com a cadena desitjada.
Sintaxi :
string to_string (int val );>
Paràmetres:
- val - Qualsevol valor numèric.
Valor de retorn:
- Un objecte de cadena que conté la representació del valor com una seqüència de caràcters.
Exemple :
convertir int en cadena en java
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;> }> |
>
>Sortida
The integer in string is : 20 The float in string is : 30.500000>
Complexitat temporal: O(n)
Espai auxiliar: O(n)
Mètode 2: Ús de fluxos de cadena
En aquest mètode, un flux de cadena declara un objecte de flux que primer insereix un número, com a flux en un objecte i després utilitza str() per seguir la conversió interna d'un número a una cadena.
Exemple:
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;> }> |
>
>
java cast char a cadenaSortida
The newly formed string from number is : 2016>
Complexitat temporal: O(n)
Espai auxiliar: O(n)
Mètode 3: utilitzant la funció sprintf().
sprintf() La funció emmagatzema la sortida al buffer de caràcters especificat a la funció, en lloc d'imprimir la sortida a la consola.
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> |
>
>Sortida
the string is : 12234>
Complexitat temporal: O(n)
Espai auxiliar: O(n)
Mètode 4: Ús de boost lexical cast
Similar a la conversió de cadenes, la funció lexical_cast() segueix sent la mateixa, però a la potenciar el repartiment lèxic La llista d'arguments de temps es modifica a lexical_cast(numeric_var).
Exemple:
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;> }> |
>
>Sortida
The float value in string is : 10.5 The int value in string is : 17>
Complexitat temporal : O(n)
Espai Auxiliar : O(n)