Maison >développement back-end >C++ >Traduisez ce qui suit en chinois : Programme C++ pour convertir une chaîne en flottant
Le typage statique est utilisé en C++. Pour écrire un programme, les variables doivent être définies comme des types spécifiques. Parfois, une entrée de la console ou un fichier doit être lu. Dans ce cas, le programme reçoit des données de chaîne. Des opérations spéciales sont nécessaires pour les convertir en d'autres types de données. Cet article fournira une méthode C++ pour convertir une chaîne en un entier à virgule flottante. Il existe plusieurs méthodes différentes que vous pouvez utiliser pour y parvenir. Explorez chacun d’eux séparément.
Les flux sont un excellent outil en C++. Les flux de fichiers, les flux d'entrée/sortie standard, etc. sont des exemples de ces flux. stringstream est un flux différent. Il fonctionne en acceptant une chaîne en entrée, comme les autres flux. Nous devons importer le fichier d'en-tête sstream pour utiliser stringstream. Les données de flux peuvent être obtenues à l'aide de l'opérateur d'insertion (>>) ou de l'opérateur d'extraction (
#include < sstream > stringstream streamObject ( <a string input> );
Pour lire un type spécifique d'entrée à l'aide d'un flux, la syntaxe est la suivante -
<data type> variable; streamObject >> variable;
Jetons un coup d'œil à l'algorithme pour comprendre son fonctionnement global.
#include <iostream> #include <sstream> using namespace std; float solve( string myString) { float x; stringstream ss( myString ); ss >> x; return x; } int main() { string aNumber = "3.14159"; float convNumber = solve( aNumber ); cout << "The given number is: " << convNumber << endl; cout << "6.5 more than the given number is: " << convNumber + 6.5 << endl; }
The given number is: 3.14159 6.5 more than the given number is: 9.64159
Il ressort clairement de cet exemple que le numéro est récupéré à partir d'un objet chaîne. Puisqu'il s'agit de données réelles à virgule flottante, nous pouvons ajouter 6,5 en notation à virgule flottante et afficher le résultat.
Une approche comparable (qui fonctionne également en C) consiste à utiliser la fonction sscanf(). Cette fonction accepte un tableau de caractères en entrée et une chaîne de format, tout comme la fonction standard scanf(). Maintenant, il lit la valeur demandée dans la chaîne et l'ajoute à la variable pointée par l'adresse de la variable. Veuillez consulter la syntaxe de la fonction sscanf().
scanf ( <a string input>, <format string>, address(s) of variable );
Jetons un coup d'œil à l'algorithme pour comprendre son fonctionnement global.
#include <iostream> #include <sstream> using namespace std; float solve( string myString) { float x; sscanf( myString.c_str(), "%f", &x ); return x; } int main() { string aNumber = "6.8"; float convNumber = solve( aNumber ); cout << "The given number is: " << convNumber << endl; cout << "2.5 more than the given number is: " << convNumber + 2.5 << endl; }
The given number is: 6.8 2.5 more than the given number is: 9.3
L'application fonctionne exactement de la même manière qu'avant, mais il y a quelques points auxquels nous devons prêter attention. La méthode sscanf() ne prend pas en charge les objets chaîne de type C++. Il faut un tableau de caractères de type C. Pour y parvenir, nous utilisons la méthode c_str() pour convertir l'argument de chaîne fourni en un tableau de caractères de type C.
L'utilisation de la méthode stof() du fichier d'en-tête "Strings" est un autre moyen rapide et facile de convertir une chaîne en entier. Cette fonction convertit un objet chaîne en nombre à virgule flottante correspondant après l'avoir reçu en entrée.
#include <string> stof ( <integer in string format> );
#include <iostream> #include <sstream> using namespace std; float solve( string myString) { float x; x = stof( myString ); return x; } int main() { string aNumber = "6.8"; float convNumber = solve( aNumber ); cout << "The given number is: " << convNumber << endl; cout << "2.5 more than the given number is: " << convNumber + 2.5 << endl; }
The given number is: 6.8 2.5 more than the given number is: 9.3
Bien que atof() soit également disponible en C, il équivaut à stof. Les chaînes peuvent être soumises au format tableau de caractères. Vous pouvez l'obtenir en important la bibliothèque cstdlib. Sinon, il n'y a pas de réelle différence. Vérifions la syntaxe.
#include <cstdlib> atof ( <floating number in character array format> );
#include <iostream> #include <sstream> using namespace std; float solve( string myString) { float x; x = atof( myString.c_str() ); return x; } int main() { string aNumber = "8.9"; float convNumber = solve( aNumber ); cout << "The given number is: " << convNumber << endl; cout << "6.5 more than the given number is: " << convNumber + 6.5 << endl; }
The given number is: 8.9 6.5 more than the given number is: 15.4
Il existe plusieurs façons de convertir une chaîne en float. Les deux premières méthodes (utilisant stringstream et sscanf()) sont des moyens généraux de convertir une chaîne en n'importe quel type de données sans rien changer d'autre ; la seule chose qui change est le type de la variable finale. stof() et atof() Ces fonctions sont uniquement utilisées pour convertir des chaînes en nombres à virgule flottante. D'autres fonctions qui convertissent en différents types de données sont équivalentes. Puisqu'il s'agit de fonctions basées sur C, sscanf et atof() n'acceptent pas les objets chaîne. Avant de les utiliser, nous devons convertir la chaîne en un tableau de caractères à l'aide de la fonction c_str().
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!