c string conversion functions
Ce didacticiel couvre les fonctions de conversion de chaîne C ++ qui peuvent être utilisées pour convertir la chaîne en int & double et int en chaîne, etc.:
Il est courant de convertir une chaîne en nombres comme un entier et un double lorsque nous développons des applications C ++.
Cette rubrique couvre les fonctions qui peuvent être utilisées pour convertir efficacement les chaînes en int & double et les valeurs numériques en chaîne.
=> Lisez la série de formations populaires C ++ ici.
Ce que vous apprendrez:
Fonctions de conversion de chaîne C ++
Lorsque nous programmons des applications en C ++, il devient nécessaire de convertir des données d'un type à un autre. La conversion des données doit être telle qu'aucune donnée ne soit perdue lorsque nous convertissons les données existantes dans un nouveau type. Cela est particulièrement vrai lorsque nous convertissons des données de chaîne en nombres et vice-versa.
Dans ce didacticiel, nous aborderons les différentes fonctions permettant de convertir un objet std :: string en types de données numériques, y compris entier et double.
Convertir une chaîne en types numériques en C ++
En général, il existe deux méthodes courantes pour convertir une chaîne en nombres en C ++.
- Utilisation des fonctions stoi et atoi qui se répliquent pour tous les types de données numériques.
- Utilisation de la classe stringstream.
Laissez-nous discuter de chaque méthode en détail.
Utilisation des fonctions stoi et atoi
La classe std :: string prend en charge diverses fonctions pour convertir une chaîne en entier, long, double, float, etc. Les fonctions de conversion prises en charge par std :: string sont tabularisées comme suit:
Fonction | Description |
---|---|
debout voler flâner | Convertit la chaîne en entier (y compris les types longs et longs longs). |
atoi atoll atoll | Convertit une chaîne d'octets en entier (y compris les types longs et longs longs). |
se tenait poussière stold | Convertit une chaîne d'octets en valeurs à virgule flottante (y compris les types float, double et long double). |
stoul stoull | Convertit une chaîne d'octets en entier non signé (y compris les types longs non signés et longs longs non signés). |
Noter: À l'exception des fonctions de conversion de chaîne d'octets (atoi), toutes les autres fonctions de conversion sont présentes à partir de C ++ 11. Nous allons maintenant discuter des fonctions de conversion pour convertir une chaîne en int et une chaîne en double.
Chaîne en entier Utilisation de stoi () et atoi ()
debout()
Prototype de fonction: stoi (const std :: string & str, std :: size_t * pos = 0, int base = 10);
Paramètres):
str => Chaîne à convertir
pos => Adresse d'un entier pour stocker le nombre de caractères traités; par défaut = 0
base => La base numérique; par défaut = 0
Valeur de retour: Entier équivalent à la chaîne spécifiée.
Des exceptions: std :: invalid_argument => Si aucune conversion ne peut être effectuée.
Std :: out_of_range => Si la valeur convertie est hors de la plage du type de résultat.
Description: La fonction stoi () prend une chaîne comme argument et renvoie une valeur entière. Il lèvera une exception si la valeur convertie est hors plage ou si la conversion ne peut pas être effectuée.
10 meilleurs sites pour regarder des anime
Prenons un exemple de programmation pour mieux comprendre cette fonction.
#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 << '
'; }
Production:
stands («53») est 53
stands («3,142») vaut 3
stoi («31477 with char») est 31477
Dans le programme ci-dessus, nous avons utilisé la fonction stoi avec trois chaînes différentes. Notez que lors de la conversion des données de chaîne en une valeur entière, la fonction supprime les espaces blancs ou tout autre caractère.
Par conséquent, dans le cas de mystr2 (3.142), la fonction a tout ignoré après la virgule décimale. De même, dans le cas de mystr3 («31477 avec char»), seul le nombre a été pris en considération. Les autres contenus de la chaîne ont été supprimés.
atoi ()
Prototype de fonction: int atoi (const char * str);
Paramètres): str => Pointeur vers une chaîne d'octets terminée par null.
Valeur de retour:
Success => Valeur entière correspondant à l'argument str.
Échec => Indéfini si la valeur convertie est hors plage.
0 => Si aucune conversion ne peut être effectuée.
Description: Cette fonction convertit une chaîne d'octets en une valeur entière. La fonction atoi () supprime tous les espaces jusqu'à ce qu'un caractère non blanc soit rencontré, puis prend les caractères un par un pour former une représentation de nombre entier valide et le convertit en entier.
Exemple de fonction 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 << '
'; }
Production:
atoi («24») est égal à 24
atoi («3,142») vaut 3
atoi («23446 with char») est 23446
atoi («mots avec 3») vaut 0
Comme indiqué dans le programme ci-dessus, la fonction atoi prend une chaîne d'octets comme argument et la convertit en une valeur entière. Les espaces blancs ou tout autre caractère sont supprimés. Si la valeur convertie est hors plage, 0 est renvoyé.
Chaîne à doubler en utilisant stod ()
Prototype de fonction: stod (const std :: string & str, std :: size_t * pos = 0);
Paramètres):
str => Chaîne à convertir
pos => Adresse d'un entier pour stocker le nombre de caractères traités; par défaut = 0
Valeur de retour: Valeur double équivalente à la chaîne spécifiée.
Des exceptions:
std :: invalid_argument => Si aucune conversion ne peut être effectuée.
std :: out_of_range => Si la valeur convertie est hors de la plage du type de résultat.
Description: Cette fonction convertit une chaîne en une valeur à virgule flottante. La fonction stod () supprime tous les espaces jusqu'à ce qu'un caractère non blanc soit rencontré, puis prend les caractères un par un pour former une représentation numérique valide à virgule flottante et la convertit en virgule flottante.
Voyons un exemple illustrant cette fonction.
#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 << '
'; }
Production:
stod («24») est égal à 24
stod («3,142») est 3,142
stod («23446 with char») est 23446
Le programme ci-dessus démontre l'utilisation de la fonction «stod». La sortie indique les valeurs doubles converties des chaînes spécifiées.
Utilisation de la classe stringstream
L'utilisation de la classe stringstream est le moyen le plus simple de convertir des valeurs de chaîne en valeurs numériques.
Nous allons apprendre la classe stringstream en détail dans nos prochains tutoriels. Ci-dessous se trouve un programme C ++ qui montre la conversion d'une chaîne en valeurs numériques.
#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< Production:
Valeur de num: 2508
Valeur de dNum: 3,142
Dans le programme ci-dessus, nous voyons que nous avons déclaré un objet string. Ensuite, nous déclarons un objet stringstream et passons la chaîne à cet objet afin que la chaîne soit convertie en objet stringstream. Ensuite, cet objet stringstream est passé à une valeur entière à l’aide de l’opérateur «>>» qui convertit l’objet stringstream en entier.
De même, nous avons également converti la chaîne en double. Ainsi, tant que l'opérateur «>>» prend en charge le type de données, nous pouvons convertir une chaîne en n'importe quel type de données en utilisant un objet stringstream.
Convertir un entier en chaîne en C ++
Nous pouvons également convertir des valeurs numériques en valeurs de chaîne. Il existe deux méthodes pour convertir des valeurs numériques en valeurs de chaîne et nous en discuterons ci-dessous.
renvoyer un tableau de chaînes en java
Utilisation de la fonction to_string ()
Prototype de fonction: std :: string to_string (type valeur);
Paramètres): value => Valeur numérique à convertir
Valeur de retour: Valeur de chaîne contenant la valeur convertie.
Exception: peut lancer std :: bad_alloc
Description: Cette fonction to_string () convertit la valeur numérique passée en argument en type chaîne et renvoie la chaîne.
Voyons un exemple de cette fonction utilisant un programme 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; }
Production:
La représentation sous forme de chaîne de l'entier: 20 La représentation sous forme de chaîne de float: 30,500000
Ici, nous avons deux variables, chacune de type integer et float. Ensuite, nous appelons la méthode to_string deux fois avec l'argument entier et flottant et convertissons les deux valeurs en valeurs de chaîne. Enfin, nous affichons les valeurs converties.
Notez que la conversion de la valeur à virgule flottante en chaîne peut donner des résultats inattendus car le nombre de chiffres significatifs peut être zéro avec la méthode to_string.
Utilisation de la classe stringstream
À l'aide de la classe stringstream, le stringstream déclare d'abord un objet stream qui insère une valeur numérique en tant que flux dans l'objet. Il utilise ensuite la fonction «str ()» pour convertir en interne une valeur numérique en chaîne.
Exemple:
#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; }
Production:
La chaîne formée d'un entier est: 26082019
La corde formée de double est: 3.142
Dans cette liste, nous avons défini un entier et une valeur double. Ensuite, nous avons l'objet ostringstream à l'aide duquel nous convertissons la valeur numérique en objet stringstream. Ceci utilise le '<<’ operator. Next, we use the str() method on a stringstream object to convert it to a string.
Conclusion
Dans ce didacticiel, nous avons discuté des fonctions de conversion qui convertissent une chaîne en types numériques et des types numériques en chaîne. Nous avons vu en détail les fonctions et les exemples des fonctions stoi (), stod (), atoi (), to_string (). Nous avons également discuté de certaines des fonctions et méthodes de classe stringstream qui nous aident à effectuer les conversions mentionnées.
Lecture recommandée = >> Convertir une chaîne en entier en Java et Méthodes pour convertir Int en String en Java
Dans notre prochain didacticiel, nous allons apprendre les fonctions de conversion pour les types de données de caractères.
=> Consultez les didacticiels de formation approfondie C ++ ici.
lecture recommandée
- Fonctions de chaîne Python
- Fonctions de conversion de caractères C ++: char en int, char en chaîne
- Tutoriel Java String with String Buffer et String Builder
- Fonctions de chaîne en C ++: getline, sous-chaîne, longueur de chaîne, etc.
- C # Convertir une chaîne en Int à l'aide des méthodes Parse, Convert et TryParse
- Fonctions de chaîne VBScript: fonctions VBScript inStr, Replace, Mid et Trim
- Tutoriel Python String Split
- Tutoriel C # String - Méthodes de chaîne avec des exemples de code