Skaičių konvertavimas į eilutę C++

C++ kalboje sveikųjų skaičių konvertavimas į eilutes arba skaičių konvertavimas į eilutes arba atvirkščiai iš tikrųjų yra didelis paradigmos pokytis. Apskritai arba konkrečiau konkurencinio programavimo atveju yra daug atvejų, kai turime konvertuoti skaičių į eilutę arba eilutę į skaičių. Pažvelkime į keletą būdų, kaip paversti sveikąjį skaičių arba skaičių į eilutę.

Skaičių konvertavimas į eilutę C++

Yra 4 pagrindiniai būdai konvertuoti skaičių į eilutę , kurios yra tokios:

    Naudojant to_string() Naudojant eilutę Stream Naudojant funkciją sprintf() Naudojant boost lexical cast

1 būdas: to_string() naudojimas

The to_string() funkcija gali būti naudojama norint konvertuoti sveikąjį skaičių, slankiojo kablelio reikšmes arba bet kurį skaičių į eilutę. Ši funkcija priima skaičių (kuris gali būti bet kokio tipo duomenų) ir grąžina skaičių kaip norimą eilutę.

Sintaksė :

string  to_string (int val ); 

Parametrai:

  • val – Bet kokia skaitinė reikšmė.

Grąžinimo vertė:

  • Eilutės objektas, kuriame reikšmė pateikiama kaip simbolių seka.

Pavyzdys :

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;> }>

Išvestis

The integer in string is : 20 The float in string is : 30.500000 

Laiko sudėtingumas: O(n)
Pagalbinė erdvė: O(n)

2 būdas: eilučių srautų naudojimas

Taikant šį metodą, eilutės srautas deklaruoja srauto objektą, kuris pirmiausia įterpia skaičių, kaip srautą į objektą ir tada naudoja str() stebėti vidinį skaičiaus konvertavimą į eilutę.

Pavyzdys:

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;> }>

Išvestis

The newly formed string from number is : 2016 

Laiko sudėtingumas: O(n)
Pagalbinė erdvė: O(n)

3 būdas: sprintf() funkcijos naudojimas

sprintf () funkcija išsaugo išvestį funkcijoje nurodytame simbolių buferyje, o ne spausdina išvestį konsolėje.

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>

Išvestis

the string is : 12234 

Laiko sudėtingumas: O(n)
Pagalbinė erdvė: O(n)

4 metodas: leksinės raidos padidinimo naudojimas

Panašiai kaip eilutės konvertavimas, funkcija lexical_cast() išlieka ta pati, tačiau padidinti leksinį aktorių skaičių ' laiko argumentų sąrašas pakeičiamas į lexical_cast(skaitmeninis_var).

Pavyzdys:

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;> }>

Išvestis

The float value in string is : 10.5 The int value in string is : 17 

Laiko sudėtingumas : O(n)
Pagalbinė erdvė : O(n)