使用StringCchPrintf从子串构建字符串

时间:2012-10-30 12:25:24

标签: c++ strsafe

我正在尝试从一个来自错误消息的子字符串构建一个字符串:

// the error message
const char* error_msg = e.what();

size_t const cchDest = 100;
TCHAR pszDest[cchDest]; 

LPCTSTR pszFormat = TEXT("%s %s");
TCHAR* pszTxt = TEXT("The error is: ");

HRESULT hr = StringCchPrintf(pszDest, cchDest, pszFormat, pszTxt, error_msg );

我希望第二个%s将替换为error_msg的值,但输出为:

The error is: ☐☐a

如何修改上面的代码以便显示子字符串?

EDIT1 我也试过以下,但我得到的只是一个盒子。

TCHAR* pszTxt = TEXT("The error is: %c", error_msg );
HRESULT hr = StringCchPrintf(pszDest, cchDest, pszTxt);

1 个答案:

答案 0 :(得分:2)

这有效:

LPCTSTR pszFormat = TEXT("%s %hs");
TCHAR* pszTxt = TEXT("The error is: ");

HRESULT hr = StringCchPrintf(pszDest, cchDest, pszFormat, pszTxt, error_msg);