à l'aide de static_cast<type> convertir float string c++
donc c'est mon premier "test" à l'aide de static_cast, je ne l'ai jamais fait, donc s'il vous plaît garder avec moi (je suis très novice en c++, a déclaré 3 jours il ya)
//ConsoleApplication3.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include "iostream"
#include "string"
int main()
{
float value = 2.5f;
int temp;
std::cout << value;
std::cout << static_cast<std::string>(value) ;
std::cin.get();
}
il donne un message d'erreur indiquant
error C2440: 'static_cast' : impossible de convertir de 'flotter' à
'std::string'IntelliSense: aucun constructeur approprié existe pour convertir de "flotter"
pour "std::basic_string,
std::allocator>"
suis-je raté quelque chose?
Peux pas le faire.
en.cppreference.com/w/cpp/language/static_cast, msdn.microsoft.com/en-us/library/c36yw7x9.aspx, en.wikipedia.org/wiki/Static_cast
remarque: votre ne comprend pas l'air bien: "système" comprend devraient être inclus avec
std::to_string
ou std::sprintf(buf, "%f", value)
ou std::stof
en.cppreference.com/w/cpp/language/static_cast, msdn.microsoft.com/en-us/library/c36yw7x9.aspx, en.wikipedia.org/wiki/Static_cast
remarque: votre ne comprend pas l'air bien: "système" comprend devraient être inclus avec
#include <something>
, pas "
. Aussi, vous n'êtes pas à l'aide de stdafx et si vous êtes seulement à apprendre le C++, je vous conseille de l'oublier - mais c'est ma opinable avis.OriginalL'auteur | 2014-01-17
Vous devez vous connecter pour publier un commentaire.
static_cast
est utilisé pour convertir en toute sécurité modulable types entre les uns des autres, ce qui signifie types de partager la même classe de base ou les types de définir des opérateurs de conversion entre les uns des autres. Bien questd::string
peut définir un constructeur qui prend enfloat
(pas sûr), il n'est pas coulé en mesure defloat
.boost::lexical_cast<>
comme une alternative à réaliser ce qu'ils pensent qu'ils ont besoin pour réaliser 🙂OriginalL'auteur Will Custode
static_cast
ne peut pas être utilisé de cette façon.static_cast
est utilisé pour cast -- en d'autres termes, à faire semblant (d'une manière) que la chose passe est en fait quelque chose d'autre. Ce que vous devez faire est de convertir.Vous n'avez pas besoin de convertir un
float
àcout
il-juste:Si vous avez besoin de les convertir, puis il ya beaucoup d'options:
std::to_string
(C++11)std::stringsgtream
boost::lexical_cast
Sont que quelques-uns.
OriginalL'auteur John Dibling
Ce que vous essayez d'atteindre n'est pas de la coulée, mais la conversion d'un flotteur pour une chaîne de caractères. Il y a plusieurs façons de le faire.
C'est ce qui explique static_cast assez bien: Régulièrement exprimées vs. static_cast vs dynamic_cast
C'est ce qui explique comment transformer un nombre en une chaîne: Comment puis-je convertir un double en une chaîne de caractères en C++?
Et c'est une réponse à chacun de lire sur divers moulages en c++: Quand doit-static_cast, dynamic_cast, const_cast et reinterpret_cast être utilisé?
OriginalL'auteur Ferenc Deak
static_cast
est utilisé pour la conversion d'un type à l'autre convertible type. Une conversion defloat
àstd::string
n'est pas défini.Cependant, la manière d'obtenir une représentation sous forme de chaîne de valeur est l'appel de la fonction
std::to_string()
:Mais les flux de sortie sont dessigned de travailler avec des types de chaînes de trop. Donc, il suffit de placer le flotteur dans le flux:
OriginalL'auteur Manu343726