c++简单的函数输出字符串问题

我用的是c++builder,以前是用的StringGetValue(){Strings_value="123456";returns_value;}也就是用String... 我用的是c++builder,以前是用的
String GetValue()
{
String s_value = "123456";
return s_value;
}
也就是用String来传递字符串的,很好用。但是现在想编写dll,发现dll对String不识别,我试着用char*代替:
char* GetValue()
{
String s_value = "123456";
return s_value.c_str();
}
但是调试结果是有时可以返回正确,有时返回异常。问别人说这个方法不安全,我该怎么修改才能将字符串从函数中返回给主程序?
问题很基础,很弱智,希望大家好好回答。谢谢!
1楼,你的那个方法我试了半天没试出来,你是怎么调用的呢?麻烦告诉下,谢谢。
还有我记得可以用参数的方法来输出,不知道怎么搞?好像那种方法比较常用,麻烦给出实现和调用,谢谢!
展开
 我来答
若以下回答无法解决问题,邀请你更新回答
xniren
推荐于2016-11-09 · TA获得超过1154个赞
知道小有建树答主
回答量:554
采纳率:100%
帮助的人:522万
展开全部
1、类String实现了对字符串的管理,当函数GetValue返回String对象时,实际上一并返回了一个由类String管理的内部字符串,该字符串仅随着String对象的消亡而消亡。
2、类型char *用于声明(定义)字符指针变量,当函数GetValue返回字符指针时,实际上返回了一个字符串的首地址,这个地址在函数内部对象s_value消亡之后成为一个“野指针”。因此,“调试结果是有时可以返回正确,有时返回异常”。
3、有一个简单的方法来实现楼主的要求,仅做参考:
char *GetValue()
{
static char *s_value = "12345";
return s_value;
}

问题补充答复:我是这样一来调用的
#include <stdio.h>

void main()
{
char *p = GetValue();
printf("p=%s\n", p);
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式