windows下字符串格式化的方法总结

日常开发中,经常需要用到字符串格式化,将某个数字放进字符串里面。最开始C语言时应该都使用过prinft

std::string strName = "aLi";
int nAge = 23;
printf("My name is %s. My age is %d", strName, nAge);

但是printf是直接输出到控制台的,有时候我们需要在某些地方使用到,就需要用到字符串来存储这个已格式化的字符串。下面总结几种常用的字符串格式化的方法。

  • MFC的CString

最简单粗暴,调用成员函数Format即可:

WCHAR wstrName[100] = L"aLi";
int nAge = 23;
CString cstrName;
cstrName.Format(_T("My name is %s. My age is %d"), wstrName, nAge);

但是,MFC的一些设计存在一些问题,有crash的风险,MFC的东西都尽可能地少用,而且有些项目也并没有使用到MFC。

  • windwos下,可以使用sprintf_s(其Unicode版本为swprintf_s
    std::wstring strCmd;
    int64_t i64Age = 23000000000;
    std::wstring strName = L"啊里";
    wchar_t szCmd[1024] = { 0 };
    //对应的ANSI版本是 sprintf_s
    swprintf_s(szCmd, 1024, L"My name is %s. My age is %I64d", strName.c_str(), i64Age);
    strCmd = szCmd;

而且本人还尝试了一下wsprintf,显示中文时会乱码,而swprintf_s可以正常显示中文。

  • 标准C++下,可以使用std::ostringstream
    用法其实就很简单了,简单地参考ostringstream的用法即可。

你可能感兴趣的:(C/C++程序设计,windows程序设计,MFC)