我使用MFC TextOut在屏幕上放置一些文本,如下所示

std::string myIntToStr(int number)
{
    std::stringstream ss;//create a stringstream
    ss << number;//add number to the stream
    return ss.str();//return a string with the contents of the stream
}


void MViewClass::DrawFunction()
{
    CClientDC aDC(this);
    // .. Drawing Code
    aDC.TextOut(27, 50, ("my age is " + myIntToStr(23)).c_str());

}


但是我收到错误消息,说“无法将参数3从'const char *'转换为'const CString&'”。

TextOut的文档显示了CString重载。我想将CString与TextOut一起使用,因为它允许我使用myIntToStr转换器。有什么建议么?

最佳答案

该代码使用std::string's c_str , which returns const char * , not CString`。尝试

void MViewClass::DrawFunction()
{
    CClientDC aDC(this);
    CString s("my age is ");
    s += myIntToStr(23).c_str();
    // .. Drawing Code
    aDC.TextOut(27, 50, s);
}


或只使用CString::Format

void MViewClass::DrawFunction()
{
    CClientDC aDC(this);
    CString s;
    s.Format("my age is %d", 23);
    // .. Drawing Code
    aDC.TextOut(27, 50, s);
}

关于c++ - 使用CString的MFC TextOut失败,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25514407/

10-13 06:29