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楼,你的那个方法我试了半天没试出来,你是怎么调用的呢?麻烦告诉下,谢谢。
还有我记得可以用参数的方法来输出,不知道怎么搞?好像那种方法比较常用,麻烦给出实现和调用,谢谢! 展开
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楼,你的那个方法我试了半天没试出来,你是怎么调用的呢?麻烦告诉下,谢谢。
还有我记得可以用参数的方法来输出,不知道怎么搞?好像那种方法比较常用,麻烦给出实现和调用,谢谢! 展开
若以下回答无法解决问题,邀请你更新回答
展开全部
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);
}
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);
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询