Je suis incapable d'imprimer Syntaxe utilisée pour double code> à l'aide de wsprintf () code>.
J'ai essayé sprintf () code> et cela a fonctionné bien. wsprintf () code> et sprintf () code> est comme suit: P> wsprintf(str,TEXT("Square is %lf "),iSquare); // Does not show value
sprintf(str," square is %lf",iSquare); // works okay
4 Réponses :
Vraisemblablement, vous n'êtes pas compilé à Unicode et que le texte est défini à une chaîne ordinaire. P>
J'ai évité depuis la réponse. Mais cela n'a pas l'air d'avoir mis beaucoup d'effort pour découvrir wsprintf () code>.
Vous êtes correct, je n'ai pas cherché wsprintf. Clairement l'OP n'a pas non plus été. J'ai pris une supposition et j'avais tort; Je vais partir pour la postérité.
the Swprintf pièce de fonction de la bibliothèque Standard Visual Studio est ce que vous voulez. Il prend en charge tous les codes de format que wsprintf code> ne prend pas en charge le point flottant. Voir son Documentation - lf code> n'est pas répertorié comme code de format valide. P>
sprintf code> fait. P>
Si vous voulez quelque chose comme En réalité, puisque vous utilisez le texte code> macro code>, vous voulez probablement Pour ce que ça vaut la peine: wsprintf code> ne prend pas en charge le point flottant. L'erreur utilise du tout. P>
sprintf code>, mais pour les caractères / chaînes larges, vous voulez swprintf code> à la place. P>
_sprintf code> à la place: il passera d'une implémentation étroite à large en synchronisation avec le même Les macros de préprocesseur en tant que texte code> utilisent pour décider si la chaîne sera étroite ou large. Toutefois, toute cette approche est en grande partie une relique des jours où Microsoft a toujours vendu et appuyé des versions de Windows basées sur le noyau NT 32 bits et sur le noyau 16 bits. Les versions de 16 bits n'avaient que une prise en charge extrêmement minimale de caractère large, de sorte que Microsoft a travaillé dur pour permettre à une base de code source unique à compiler pour utiliser des caractères étroits (ciblant des noyaux 16 bits) ou des caractères (pour cibler le 32 bits. graines). Les noyaux de 16 bits sont partis pour assez longtemps que presque personne n'a vraiment beaucoup de raison de les soutenir. P>
wsprintf code> est presque entièrement une relique historique. Le w code> apparemment représente Windows code>. Il a été inclus dans Windows Way Retour lorsque (retour aux jours de 16 bits). Il a été écrit sans soutien au point flottant, car à cette époque, Windows n'utilise aucun point flottant en interne - cela fait partie de la raison pour laquelle il a des routines comme MULDIV , même si cela fait (à peu près) la même chose avec un point flottant est assez trivial. P >
Heck, il a couru sur des systèmes assez importants qui n'avaient pas du tout de matériel à virgule flottante. Même Windows 95 a soutenu le 80386 sans 387 FPU.
Oui cela fonctionne. J'ai utilisé le "_sprintf_s" Cette méthode est exactement ce que je veux. Merci de votre aide. msdn.microsoft.com/en-us/library/ce3zzk1k.aspx
"Il a été inclus dans l'arrière de Windows Retour lorsque (retour au moins Windows 2.1, probablement Windows 1)." Pas vrai. Il a été disponible pour la première fois dans Windows 3.0, et non Windows 2.x NOR 1.X.
@ Raymai97: Je vais devoir prendre votre parole pour cela. J'ai perdu tous les documents que j'avais sur les fenêtres de Pre-32 bits 3 ou 4 bouge il y a ...
Je conseillerais à l'OP juste de laisser tomber le texte code> et t code> entièrement, à moins que la compatibilité de code source avec des versions de Windows du début des années 90 est vraiment une exigence.
La fonction Plus d'informations sur Swprint peut être trouvée ici p> wsprintf () code> ne prend pas en charge les paramètres de point flottant, essayez d'utiliser swprintf () code> si vous travaillez avec des valeurs de point flottant. p>
Est
str code> une chaîne de caractères large?@Pascalcuoq: Dans ce contexte, une macro Windows (Microsoft) qui se développe à
l code>. Plutôt verbose et orienter-surmonté."% LF" code> est pourDouble double code> Arguments. Utilisez un fichier clair"% f" code> pour undouble code> argument. Je ne sais pas si"% lf" code> est valide en standard C ++.