为什么我在使用Format()格式化的CString中获得无效数据?

时间:2010-12-15 01:05:31

标签: c++ string-formatting cstring

LRESULT CFlashWnd::OnScannerProgress( WPARAM wParam, LPARAM lParam )
{
    ScannerProgress *pEvent = (ScannerProgress *)wParam;

    CString scannerAreaText = _T("");
    scannerAreaText.Format(_T("<B>Scanning%3A</B> <font face='Arial' size='10'>%s</font>"), pEvent->pszScanner);

    CString scanProgressText = _T("");
    scanProgressText.Format(_T("<B>Scan Progress%3A</B> <font face='Arial' size='10'>%f</font>"), pEvent->dwScanPercent);

    CString scanProgressBarValue = _T("");
    scanProgressBarValue.Format(_T("%f%"), pEvent->dwScanPercent);

    if(pEvent->pszScanItem)
        free((void *)pEvent->pszScanItem);

    if(pEvent->pszScanner)
        free((void *)pEvent->pszScanner);

    delete pEvent;

    return 0;
}

我不断获得时髦的价值观和/或崩溃。欢迎任何建议。

2 个答案:

答案 0 :(得分:2)

使用%% 3A。

代替%3A

答案 1 :(得分:1)

我不确定但你应该仔细检查格式字符串中的%3A。如您所知,百分号表示占位符。