Maison >développement back-end >C++ >Traduisez ce qui suit en chinois : Programme C++ pour convertir une chaîne en flottant

Traduisez ce qui suit en chinois : Programme C++ pour convertir une chaîne en flottant

WBOY
WBOYavant
2023-09-13 11:57:021236parcourir

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.

Utilisation de flux de chaînes en C++

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 (

Grammaire

#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 -

Grammaire

<data type> variable;
streamObject >> variable;

Algorithme

Jetons un coup d'œil à l'algorithme pour comprendre son fonctionnement global.

  • Prendre l'objet chaîne x comme entrée
  • Créez un objet stringstream, nommé ss, et transmettez x à l'objet
  • Créer une variable à virgule flottante xFloat
  • Stockez le nombre à virgule flottante dans xFloat à l'aide de l'opérateur d'insertion dans ss

Exemple

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

Sortie

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.

Utilisation de sscanf() en C++

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().

Grammaire

scanf ( <a string input>, <format string>, address(s) of variable );

Algorithme

Jetons un coup d'œil à l'algorithme pour comprendre son fonctionnement global.

  • Prendre la chaîne x comme entrée au format de tableau de caractères de type C
  • Utilisez la fonction sscanf() avec les paramètres x, la chaîne de format et l'adresse variable
  • La valeur de la variable sera stockée directement à partir de la fonction sscanf().

Exemple

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

Sortie

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.

Utilisation de stof() en 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.

Grammaire

#include <string>
stof ( <integer in string format> );

Algorithme

  • Prendre l'objet chaîne x comme entrée
  • xFloat = stoi(x)
  • Renvoie xFloat en tant que variable flottante à partir de la chaîne x donnée.

Exemple

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

Sortie

The given number is: 6.8
2.5 more than the given number is: 9.3

Utilisation d'atof() en C++

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.

Grammaire

#include <cstdlib>
atof ( <floating number in character array format> );

Algorithme

  • Prenez l'objet chaîne x en entrée, au format tableau de caractères en langage C.
  • xFloat = atoi(x)
  • Renvoie xFloat en tant que variable à virgule flottante à partir de la chaîne x donnée.

Exemple

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

Sortie

The given number is: 8.9
6.5 more than the given number is: 15.4

Conclusion

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer