首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用CString的MFC TextOut失败

使用CString的MFC TextOut失败
EN

Stack Overflow用户
提问于 2014-08-27 04:12:28
回答 2查看 1.4K关注 0票数 0

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

代码语言:javascript
复制
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过载。我想在TextOut中使用CString,因为它允许我使用我的myIntToStr转换器。有什么建议吗?

EN

回答 2

Stack Overflow用户

发布于 2014-08-27 04:39:53

代码使用std::string'sc_str, which returnsconst char*, notCString`。试一试

代码语言:javascript
复制
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

代码语言:javascript
复制
void MViewClass::DrawFunction()
{
    CClientDC aDC(this);
    CString s;
    s.Format("my age is %d", 23);
    // .. Drawing Code
    aDC.TextOut(27, 50, s);
}
票数 1
EN

Stack Overflow用户

发布于 2014-08-27 06:07:03

我假设您在代码中的其他地方使用函数myIntToStr将int转换为字符串,并且您当前的问题是如何使用TextOut显示C++ string

您只需以这种方式在从std::string初始化的堆栈中创建一个CString:

代码语言:javascript
复制
void MViewClass::DrawFunction()
{
    CClientDC aDC(this);
    // .. Drawing Code
    CString age(("my age is " + myIntToStr(23)).c_str());
    aDC.TextOut(27, 50, age);

}

由于它是在堆栈上创建的,它将在方法结束时自动消失,您不必担心分配和释放。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25514407

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档