stl string vs MFC CString(GetBufferSetLength)

peimoxu 2009-06-08 11:36:20


CString str
strcpy(str.GetBufferSetLength(len), "Test");
str.ReleaseBuffer();


能否在stl中也实现这样的功能?

std::string str
strcpy((char*)str.data(), "Test");
//str.length() 的值是0
...全文
126 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
wangxipu 2009-06-08
  • 打赏
  • 举报
回复
不要主观臆断
看帮助
peimoxu 2009-06-08
  • 打赏
  • 举报
回复
没有说目的,我是想实现一个如CString::Format之类的函数,我想避免我在我代码中有new和delete

string str;
char* pdata = new char[len];
...
sprintf(...);
str = pdata
delete [] pdata;
return str ;
healer_kx 2009-06-08
  • 打赏
  • 举报
回复
STL没有这种方法,而且你也不应该用data()方法去返回缓冲区。。。危险啊。。。
hendriclee 2009-06-08
  • 打赏
  • 举报
回复
你直接 std::string str = "Test"不就行了?
peimoxu 2009-06-08
  • 打赏
  • 举报
回复
噢,少句代码,str.reserve(len)
w29468 2009-06-08
  • 打赏
  • 举报
回复
[Quote=引用楼主 peimoxu 的帖子:]

能否在stl中也实现这样的功能?

C/C++ code
std::string str
strcpy((char*)str.data(), "Test");
//str.length() 的值是0
[/Quote]

C++的类,用成员函数直接操作更安全更不容易出错,CString和std::string都是
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 peimoxu 的回复:]
没有说目的,我是想实现一个如CString::Format之类的函数,我想避免我在我代码中有new和delete

string str;
char* pdata = new char[len];
...
sprintf(...);
str = pdata
delete [] pdata;
return str ;
[/Quote]
你用stringstream吧

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧