zhuwt2008 2018-06-24 01:02 采纳率: 33.3%
浏览 1034
已采纳

vc++2015字符串开头为什么总是乱码?调试断点显示的值是正常的

代码如下,输出是字符串开头几个字符都变成乱码,且每次都是不一样的乱码,乱码第一个字符是“衰”,但是调试断点显示的值是正常的,不知道是怎么回事?怎么解决?
#include <string>
#include <ostream>

const char* fn1(void)
{
std::string rlt;
rlt.append("340604001640F4CFFA9A5EE84592083A3D1E0FFEA6B2F8CA6A48897EF664C7B8EF4DD7DFF76F6C951B16547");
return rlt.c_str();
}
int main(int argc, char *argv[])
{
std::cout << fn1();
std::cout << "abd";
return 0;
}
实际应用中这个函数是给c#调用的,同样前面几个字符变成乱码,后面正常,高手不啬赐教哦,感谢!

  • 写回答

4条回答

  • wodexinhao 2018-06-24 03:19
    关注

    看清楚你的函数返回类型是 一个指针,请用new 一个 内存地址然后返回,你返回的是 局部变量的内存地址,不是乱码才怪,你可以传入变量的方式来赋值,或者使用全局变量,或者使用指针

     const char* fn1(void)
    {
        std::string* rlt = new string();
        rlt->append("340604001640F4CFFA9A5EE84592083A3D1E0FFEA6B2F8CA6A48897EF664C7B8EF4DD7DFF76F6C951B16547");
        return rlt->c_str();
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

悬赏问题

  • ¥15 关于#hadoop#的问题
  • ¥15 (标签-Python|关键词-socket)
  • ¥15 keil里为什么main.c定义的函数在it.c调用不了
  • ¥50 切换TabTip键盘的输入法
  • ¥15 可否在不同线程中调用封装数据库操作的类
  • ¥15 微带串馈天线阵列每个阵元宽度计算
  • ¥15 keil的map文件中Image component sizes各项意思
  • ¥20 求个正点原子stm32f407开发版的贪吃蛇游戏
  • ¥15 划分vlan后,链路不通了?
  • ¥20 求各位懂行的人,注册表能不能看到usb使用得具体信息,干了什么,传输了什么数据