请帮我调一下.

redkey_919 2003-01-07 12:25:10
我的目的是在 ConvChr() 中利用 string 型做一些处理后返回 char *,利用 memcpy 为另一个 char * 赋值, 这里是简化代码,原代码一定要使用 memcpy 的.
请帮我调一下.
#include <iostream>
#include <string>
using namespace std;

const char * ConvChr()
{
string strVal;
strVal = "abc";
return strVal.c_str();
}


int main()
{
char chrVal[20]="def";
memcpy(chrVal, ConvChr(), sizeof(ConvChr()));

cout << chrVal << endl;

return 0;
}
...全文
66 点赞 收藏 3
写回复
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
atma 2003-01-08
danmao说的有理。你不能使用栈对象,那在函数退出的时候就被出栈释放了。用static或者new出来的对象。不过如果是new出来的,那还要有一个函数来释放它。:)
回复
skyfine 2003-01-07
最后结果为“abc"有什么问题吗?
回复
danmao 2003-01-07

const char * ConvChr()
{
static string strVal;
strVal = "abc";
return strVal.c_str();
}

strVal一定要声明称静态变量,在退出函数时不会被析构。
回复
发动态
发帖子
工具平台和程序库
创建于2007-09-28

2.4w+

社区成员

C/C++ 工具平台和程序库
申请成为版主
社区公告
暂无公告