2013-02-19 1 views
3

J'ai du code C++ où j'ai besoin d'utiliser CString avec sprintf. Dans ce code, je crée des noms de fichiers CStrings définis par sprintf. Le code est ci-dessous.Utiliser CString avec sprintf

double Number;  
Number = 0.25; 

char buffer [50]; 

CString sFile; 
sFile = sprintf(buffer,"TRJFPICD(%3.3f).txt",Number); 

CString SFFile; 
SFFile = sprintf(buffer,"TRJFPICV(%3.3f).txt",Number); 

CString SFFFile; 
SFFFile = sprintf(buffer,"TRJFPICA(%3.3f).txt",Number); 

Les noms de fichiers souhaités sont TRJFPICD(0.25).txt, TRJFPICV(0.25).txt et TRJFPICA(0.25).txt. Je dois utiliser CStrings pour mon code.

L'erreur que j'obtiens est 'operator =' est ambigu.

+1

'' sprintf' retourne int' - pourquoi voudriez-vous attendre à affecter un '' int' à un CString'? Utilisez également '_stprintf' à la place de' sprintf' pour éviter les problèmes Unicode, ou mieux encore 'CString :: Format' à la place de toute variante' sprintf'. – ildjarn

+1

Au lieu de 'sprintf', vous pouvez utiliser la méthode' Format' sur 'CString' lui-même. – jxh

+0

Utilisez ce lien MSDN pour trouver la façon exacte d'utiliser Sprint pour copier des données dans l'objet CString: http://msdn.microsoft.com/en-us/library/aa300569(v=vs.60).aspx – roymustang86

Répondre

6

Jetez un oeil à CString::Format (ignorer la partie CStringT - CString est dérivé de CStringT). Il fait ce que vous voulez et vous permet de réécrire votre code proprement:

double Number = 0.25; 

CString sFile; 
sFile.Format(_T("TRJFPICD(%3.3f).txt"), Number); 

CString SFFile; 
SFFile.Format(_T("TRJFPICV(%3.3f).txt"),Number); 

CString SFFFile; 
SFFFile.Format(_T("TRJFPICA(%3.3f).txt"),Number); 
+1

Merci tellement de. Je ne suis pas un programmeur C++. Je suis un ingénieur en structure travaillant sur mon doctorat, et je dois utiliser la programmation orientée objet C++ pour travailler avec mon conseiller. Quand je serai diplômé, je ne ferai plus jamais de programmation orientée MFC. –

+2

@Grady: Pour être obligé d'utiliser MFC seul, vous avez mes sympathies. – ildjarn

+0

Hey! C'est un doctorat! Il est supposé souffrir un peu! –

Questions connexes