c++ personnalisé format de chaîne de caractères à l'aide de stringstreams
Je suis en train d'utiliser la nouvelle stringstreams méthode pour convertir certains float+int combinaison dans un certain format, mais essaie de voir si il ya une meilleure façon de gérer cela:
Maintenant à l'aide de //string string = static_cast( &(ostringstream() << Nombre) )->str(); type de mode - Comment puis-je obtenir ce stockées dans un formulaire de chaîne de format "1.10(3)". La précision est égale à décimales. Le piège ici est aucune de ces valeurs sont des constantes. Même si la solution ne peut pas être une fonction ou stringstreams - c'est très bien aussi longtemps que c'est assez générique. Notez également qu'à la fin, le plan est d'utiliser cette chaîne en GDI chaîne de texte.
Merci d'avance si quelqu'un peut aider.
Voici mon code d'exemple(et à la recherche d'un autre moyen efficace de le faire):
string Convert(float number,int decimals)
{
std::ostringstream buff;
buff<<setprecision(decimals)<<fixed<<number;
return buff.str();
}
float f=1.1; //this can have any values from 1,1.5 or 1.52
int decimals=2; //dynamic number - calculated by other means - not a fixed number
int i=3; //some dynamic number as well - calculated by other means
string s=Convert(f,decimals)+"("+Convert(i,0)+")"; //output - 1.10(3)
- Connexes / dupe: stackoverflow.com/questions/2839592/...
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser
std::fixed
,std::setprecision
,std::setw
etstd::setfill
défini dans<iomanip>
:Sorties :
Vous pouvez également configurer les stringstream et de conserver cette configuration :
MODIFIER
Vous pouvez toujours le faire en une seule ligne si vous vraiment voulez :
Si vous voulez un
LPCWSTR
(const wchar_t *
) au lieu d'unLPCSTR
(const char*
), vous devez utiliserwstringstream
au lieu destringstream
.Si vous voulez un
LPCTSTR
(LPCSTR
ouLPCWSTR
siUNICODE
est défini), vous pouvez utiliser certainstypedef
comme ceci :TCHAR est un
char *
siUNICODE
n'est pas défini dans votre projet et unwchar_t *
siUNICODE
est défini.LPCSTR
est le nom de l'API Win32 pourconst char*
, aucune conversion n'est nécessaire destring.c_str()
. Si vous utilisez wstring il serait de vous donner unLPCWSTR
qui est unconst wchar_t *
. Si vous voulez unwstring
de lastringstream
vous devez utiliserwostringstream
au lieu deostringstream
.DrawText
prendre unLPCTSTR
qui est soitLPCSTR
ouLPCWSTR
selon votre compilateur de configuration.