使用 CString 和 sprintf

3

我有一些需要使用CString和sprintf的C++代码。在这个代码中,我正在创建由sprintf定义的CStrings文件名。代码如下:

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);

所需文件名为TRJFPICD(0.25).txt, TRJFPICV(0.25).txt, 和 TRJFPICA(0.25).txt。我的代码必须使用CStrings。
我得到的错误是“operator =”模棱两可。

1
sprintf 返回 int - 你为什么期望将 int 赋值给 CString?此外,使用 _stprintf 代替 sprintf 可以避免 Unicode 问题,或者更好的方法是使用 CString::Format 而不是任何 sprintf 变体。 - ildjarn
1
你可以使用 CString 自身的 Format 方法,而不是 sprintf - jxh
使用此 MSDN 链接查找使用 sprint 将数据复制到 CString 对象的确切方式: http://msdn.microsoft.com/zh-cn/library/aa300569(v=vs.60).aspx - roymustang86
1个回答

6
请看CString::Format(忽略CStringT部分 - CString继承自CStringT)。它可以完成你想要的功能,并让你重新编写清晰易懂的代码。
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
非常感谢。我不是 C++ 程序员,我是一名正在攻读博士学位的结构工程师,我必须使用面向对象的 C++ 编程来与我的导师合作。等我毕业后,我再也不会做面向对象的 MFC 编程了。 - Grady F. Mathews Iv
2
@Grady:被迫只能使用MFC,我深表同情。 - ildjarn
嘿!这是一个博士学位!他应该有点苦! - Nik Bougalis

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接