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#调用的,同样前面几个字符变成乱码,后面正常,高手不啬赐教哦,感谢!

0

4个回答

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

 const char* fn1(void)
{
    std::string* rlt = new string();
    rlt->append("340604001640F4CFFA9A5EE84592083A3D1E0FFEA6B2F8CA6A48897EF664C7B8EF4DD7DFF76F6C951B16547");
    return rlt->c_str();
}
3
hi_mingyi
hi_mingyi 你的函数返回类型是 一个指针,
11 个月之前 回复
zhuwt2008
zhuwt2008 是的,昨天还在奇怪程序另一个地方怎么写怎么不像以前一样出错,今天就在为这个问题头疼,错误的写法毕竟的错误的写法,看来理论基础还是要多回顾才行
11 个月之前 回复

看下编码格式是否正确

1
weixin_42533734
weixin_42533734 再审heyixia
11 个月之前 回复

基本功不行,好好打好基础吧,什么是局部变量,什么是全局变量,什么是指针,先弄清楚,返回局部变量的内存地址会有什么后果,好好学习一下吧

1

你返回的是局部变量的内存地址

0
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
vs调试代码,变量值有乱码时,如何正确显示乱码的正确值
VC调试器只能正常显示ANSI字符串及UNICODE字符串, 而UTF-8字符串及其他格式则无法显示,调试时只需要将要显示的字符串拉到Watch中,并在变量后面添加,s8即可显示同理,数字  将变量拆分为数组显示, 数字是要显示多少位, 此法对const char*这类原始字符串非常有用,x 16进制查看,hr  查看Windows HRESULT解释,wm Windows消息,例如0x0010,...
中文字符乱码正常显示调试代码
字符乱码时,通过几种字符来查看使用那种字符可以显示正常字符. 可以测试通过那种编码可以使字符显示成正常的中文字符. [code=&quot;java&quot;] public static void testCode(String text) { String[] srcCode={&quot;gbk&quot;,&quot;gb2312&quot;,&quot;utf-8&quot;,&quot;iso8859-1&quot;,&quot;latin1&quot;}; Str
vc++2015字符串开头为什么总是乱码?调试断点显示的值是正常的
代码如下,输出是字符串开头几个字符都变成乱码,且每次都是不一样的乱码,乱码第一个字符是“衰”,但是调试断点显示的值是正常的,不知道是怎么回事?怎么解决?rn#include rn#include rnrnconst char* fn1(void)rnrn std::string rlt;rn rlt.append("340604001640F4CFFA9A5EE84592083A3D1E0FFEA6B2F8CA6A48897EF664C7B8EF4DD7DFF76F6C951B16547");rn return rlt.c_str();rnrnint main(int argc, char *argv[])rnrn std::cout << fn1();rn std::cout << "abd";rn return 0;rnrn实际应用中这个函数是给c#调用的,同样前面几个字符变成乱码,后面正常,高手不啬赐教哦,感谢!
VC高级调试方法-条件及数据断点的设定
VC高级调试方法-条件及数据断点的设定 2011-06-03 9:38 (一)位置断点(LocationBreakpoint)   大家最常用的断点是普通的位置断点,在源程序的某一行按F9就设置了一个位置断点。但对于很多问题,这种朴素的断点作用有限。譬如下面这段代码: void CForDebugDlg::OnOK() {        for(int i =
vc 调试时不能查看变量值
调试时总是提示Find Symbols,please enter the path for *.pdb,一直不知道什么问题,后来搜索了好久,Project->Settings->link,category里面选debug,去掉Separate Types,重新编译就OK了。
让VS调试器正确显示UTF-8字符串
默认的, VC调试器只能正常显示ANSI字符串及UNICODE字符串, 而UTF-8字符串及其他格式则无法显示 这里无需编写插件及修改配置文件,只需要将要显示的字符串拉到Watch中,并在变量后面添加,s8即可显示  -->  同样类型的功能也应该很熟悉 ,数字  将变量拆分为数组显示, 数字是要显示多少位, 此法对const char*这类原始字符串非常有用 ,x
VS2008 MFC程序打的断点在调试的时候无效,显示空心带个小锁的形状
点击打开原文链接 1. 首先检查是否生成了调试信息,检查&quot;属性&quot;-&amp;gt;&quot;连接器&quot;-&amp;gt;&quot;生产调试信息&quot;是否设置正确。2. 再检查调试的文件与源文件是否相符,这可能是因为源文件被修改了没有重新编译。如果不想重新编译则可以去掉选项:&quot;工具&quot;-&amp;gt;选项&quot;-&amp;gt;&quot;调试&quot;-&amp;gt;&quot;要求源文件与原始版本完全匹配&quot;。3. 检查文件中是否
串口调试助手,上位机数据,有时正常,有时出现周期性乱码(有时不正常)。
情况说明 : 串口调试助手,上位机数据,有时正常,有时出现周期性乱码(有时不正常)。 串口调试助手问题,用sscom可以,用uartassist乱码. 测试下位机 :    STM32F103ZET6 测试软件 : 正常使用的 :sscom3.3(比较好用);sscom4.2(广告位较大);secureCRT_v6.2.0 乱码的是 :UartAssist_v3.7.2(铭心网络
vs2012调试时,断点错位、变量的内存信息混乱,无法正常单步调试
我的问题是: 解决方案中,主进程加载dll运行,在调试dll时,发现断点错位、变量的内存信息混乱,无法正常单步调试。 参考了一下 http://blog.csdn.net/etetet029/article/details/7664899 的解决方法,其提出的原因 可能有三种: 第一: 代码和dll或者exe不一致; 第二: 数组等越界导致内存乱了; 第三: 0D
ios 使用xcode调试代码的时候进入断点显示变量全是nil,但NSLog输出那个变量却是有值的
ios 使用xcode调试代码的时候进入断点显示变量全是nil,但NSLog输出那个变量却是有值的
vc++6.0断点调试
一:所谓断点就是告诉调试器在何处暂时程序的运行,以便查看程序的状态以及浏览和修改变量的值等,但是在不同的运行环境中断点的类型是不一样的,在vc++6.0中用于c++调试的断点可一分为3个类型,位置断点,数据断点,条件断点。 位置断点是指示程序运行的中断的代码行号 数据断点是当某个表达式的值为真或者改变数值时中断程序的运行 条件断点是位置断点的扩展,他们的方式相同,当某个表达式的值为真或者改变
vs调试时,变量值以十六进制显示
flay = 0x00000001、flay = 0x00000009变量的值会变成十六进制显示,每当我的机器这样的时候,我都以为机器种病毒啦,经过在网上搜了一下才知道,不是机器的问题,可能是在调试过程中,不小心点到啦调试按钮旁边的【十六进制】按钮啦!你可以再次点击一下,问题就解决啦! 希望这几句话能帮助你。flay = 9。
解决VC++编译程序出现中文乱码的问题
大家在使用VC++进行编译的时候,是否都会遇见一种情况,那就是编译以后出现了中文代码。小编觉得,这一种情况还是比较普遍的。那么为了可以解决大家的难题,今天小编就教大家解决VC++编译程序出现中文乱码的问题吧。   小编在这篇教程中,主要是向大家介绍三种解决方法哟。希望这三种方法,有一种方法是适合你的。   第一种方法   好了,接下来小编要为大家介绍的第一种解决方法,这一种解决方
Java写入字符串再进行读取出现乱码
今天在研究怎么将实体类转为document,花了一个下午,整体思路是先将实体类利用反射转化为xml字符串,再将字符串转化为InputStream流,再调用SAXDreader的read(InputStream in)方法获取document对象。     但是在实现过程中碰到了一个问题。     因为需要将xml字符串转化为InputStream流,我就先将xml字符串保存到一个文件中,再进行
VS调试状态下断点总是进不去,不能进断点调试解决办法
在前两天总是遇到在调试.net的项目的时候,明明设置了断点但是总是执行进不去断掉调试查找原因之后的是项目属性中的优化代码打上对勾了,去掉对勾问题就解决了。具体操作如下图:...
VS中printf函数输出中文是乱码解决方案
VS中printf函数输出中文是乱码解决方案问题描述当我们使用VS2012进行编程时,常会出现:printf("生成的迷宫是:\n"); 然而点击控制台运行时,显示的结果却是: warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失解决办法:打开当前源代码文件,把main函数框起来。 再点击菜单栏文件–高级保存选项—
vs在release下调试时局部变量值错位修复
特指Microsoft的VC2005、VC2008、VC2010、VS20XX等。 调试时变量的监视窗口显示的值出现错误,或者张冠李戴,或者本来程序中已经赋值显示出来的却没有,如果让程序将变量输出,却是正确的。  有人已经提出了解决问题的方法:将项目属性的C++常规设置中的“调试信息格式”设置到“ZI”那一项,将“优化”设置到“禁用”,这确实解决了问题。   就是因为选择了
vs2015调试时无法查看变量值(调试时无法查看string、vector等类型的值)
一、现象   最近使用vs2015调试C++程序,结果发现了一个很奇怪的问题:调试时无法查看stl里面string,vector,list等容器类的值了,如下图所示,调试时把鼠标移动到“str”这个变量上面,结果发现显示“str|{...}”,无法显示str的值了。   正常情况下调试时应该显示“hello world”才对,如下图所示:   二、问题产生的可能原因   问题发...
xcode调试程序有时不显示变量的值?
现象:在xcode中调试程序的时候,无论是鼠标指在变量上,还是在gdb中po命令都看不到内存中变量的值 解决办法:1、在Project的Build Settings中把 Optimization Level 设置成 None 即可       2、可能是“Other C Flags”设置了值“O2”,把“O2”删除即可 我所碰到的就是第2种情况。
vs2015调试时无法看变量的值revit二次开发时
莫名奇妙的vs不能正常调试了,我于是乎给vs做修复,哎……折腾了老半天,也没有解决问题! 于是乎,到处问,终于得到了答复:卸载橄榄山……一试便行…… 在折腾了老半天,真心想骂人!
VC6.0 不能断点调试的解决方法 VC6.0没有debug模式
调试旧程序,VC6.0环境 1.VC6.0没有debug模式 Build->Configurations->Add 2.VC6.0不能断点调试  转载地址:http://blog.csdn.net/bin_zh123/article/details/5733459 现象是用 debug中的 step info或者run to cursor合着设置断点会出现One or mo
VC6.0 不能断点调试的解决方法
<br />很久没有使用VC6.0调试了,以前的一个程序直接设置了Release模式,后来发现忘记怎么改回来了,真晕~~<br /> <br />下面从网上转载了设置的方法,以免以后再忘记~汗!<br />======================================================================================<br /> <br /> <br />现象是用 debug中的 step info或者run to cursor合着设置断点会出现O
VS2010 c++工程在调试的时候看不到局部变量的值
设置问题项目右键属性打开后--Configuration
海绵学习-VS2015中的中文出现乱码的问题
   问题描述:用C#开发界面程序时,界面中控件,如果是改的属性text,则中文正常显示,可如果是在程序中修改控件属性,如string param=“中国”;Control.text=param,运行程序后,界面中的控件显示论码。    问题解决:这种问题其实是程序中的每个.CS文件的编码有问题,若是MainForm.CS中出现乱码,则选择文件-高级保存选项,选择编码方式为UTF-8即可。...
VC2008 无法调试,无法断点,断点无效的最终解决方法
今天VC2008忽然又出现断点无效了,按上次博客说的格式化了源文件,也删了编译工程数据库文件,问题依就.经过测试找到了终解决方法其实出现这个问题常常出现在工程中某一个源文件中,多是文件内的一些不可视符出了问题,比较多的是由于制表符Tab(0x09)引起的在无法点的源文件打开再把内容全选(Ctrl+A),然后在菜单 “编辑”-“高级”-“设置选定内容的格式”。要是还是无效可以用Ultra
如何解决qt高版本(5.10) 调试时无法查看qstring 问题
取消勾选箭头所示选项即可:
eclipse打断点调试进入到class文件中,不显示变量值的解决办法汇总
版权声明:本文为博主原创文章,未经博主允许不得转载。问题描述:eclipse打断点调试进入到class文件中,而且监视区不显示变量结果是由于对应的Java类跟编译后的class文件,没有关联上,解决办法:在打断点调试的时候,如果发现进入到了class文件,先别着急关闭class文件,在该class文件中有个按钮,然后点击这个按钮,选择跟该项目对应的项目类型(java项目或者javaweb项目等)关...
如何在VC6.0中设置条件断点
                                                                                朱金灿         在平时使用编程中我们调试程序一般都要设置断点进行调试。但是设置一般的断点难以调试一些循环次数比较大的代码。从网上看到一篇文章《VC调试入门》再结合自己的实践,懂得了如何设置条件断点。下面我以例子来说明:
VS2017控制台窗口输出中文时显示乱码问题修复 原因分析
[转载:原文来自--https://blog.csdn.net/weixin_39684284/article/details/79025291] 显示乱码的主要原因是因为中文在代码中的编码与控制台的编码不一致,比如代码文件的编码方式是GB2312(即GBK),而控制台编码是UTF-8时,输出中文就会产生乱码  问题解决 从网上搜了一些关于怎么解决乱码问题的帖子或者blog,主要有以下几种...
VS调试查看QString
vs2010\Common7\Packages\Debugger中[AutoExpand]下面,添加如下描述 ;Trolltech Qt QString=unicode,su> len=len,u> QCString =data, s> QPoint =x= y= QRect =x1= y1= x2= y2= QSize =width= height= QWMatrix =m11= m12=
使用vc6.0绿色版调试遇到的问题,Adminidtrator privileges...
今天想 调试一下子集和算法,但是却不能调试,提示如下图:   通过阅读提示,应该是权限问题,因此我用管理员身份运行vc6.0,结果就可以调试了。开心。...
VC++常见调试错误
调试方式: F9设置断点  F10单步执行                      光标移动到一个代码段 ctrl+ F10 执行
vs2015 中的数据断点
调试时经常需要打断点来调试程序,vs中的断点有普通断点,条件断点,数据断点和函数断点。这里只介绍数据断点 数据断点能有效的检测对象数据的变化。当一个复杂程序(或者多线程中)有很多地方都可能改变某一个对象的值,如果一个对象被莫名更改而不知道是哪里对其做了修改,那么数据断点就派上用场了。数据断点创建后当程序修改此对象时程序就会中断运行,方便开发人员找到修改对象的代码位置。 设置数据断点 在含有此...
VC++ Debug 调试时看不到CString或其他类型的值,提示“错误的指针”
将编译优化选项设置为"/Od"。 工程->工程名Properties -> Configuration Properites(配置属性)-> C/C++ -> Optimization(优化)-> Optimization: Disabled(/Od) 最后,重新生成解决方案   Note:在生成Release的时候,记得改过来。
vs 2008 断点空心加感叹号 解决方案
在vs2008中,有时会出现设置的调试时,断点红色断点出现黄色的感叹号,并提示与原版本不同,现两种解决办法。1、“工具”,“选项”,“调试”,“要求源文件与原始版本完成匹配”去掉勾。 2、通过重新格式化出问题的源文件亦可以解决,即在VS2008中选择 “编辑”-“高级”-“设置选定内容的格式”。 http://blog.csdn.net/guoguojune/article/details/9
vc++6.0调试 出现汇编代码的解决办法
碰到了这个问题,我才知道上网上搜索,才知道了原来win32还有2个模式,一个是release,一个是debug模式。。。。     拿到别人写的程序,想加断点调试,但是由于该程序设置的是win32 Release模式,不太方便,使用Project->settings,把里面settings由Win32 Release改为Win32 Debug,但是关了以后,再打开,就又恢复成Win32 Rel
关于VS调试代码看不到局部变量或者监视变量无效的问题
若是没有发布在IIS可以只关注方案一 方案一: (图片地址引用博客园:http://www.cnblogs.com/wdw31210/p/3641289.html) 方案二: 重启IIS 方案三: IIS中网站的程序应用池不要用默认的应用池,新建一个可以使用的应用池然后更改网站的应用程序池到新建的应用池,回收应用池重启网站即可...
VS 控制台输出 中文乱码
点运行中的 CMD.EXE 窗口左上角,出现菜单,选“属性”一看,“属性”中的“当前代码页”框框里写着这么一行:“437 (OEM - 美国)”,问题关键就是这里。重新点出菜单,选“默认值”项,发现“默认值”里的“当前代码页”是可以设置,有两个选项:“437 (OEM - 美国)”和“936 (ANSI/OEM - 简体中文 GBK)”,将“当前代码页”设置为“936 (ANSI/OEM - 简体中
XCODE调试时不显示变量值/指针地址的解决方案
被这屌问题折腾了好久,需要关注以下几项设置:     1.Scheme中run里面确保设成debug   2.build settings-搜索optim,确保是-O0 3.build settings-搜索-O2,改成-g。这项最坑爹,好像是默认的设置成-O2的
终于发现zend studio + xdebug设置断点各种不正常的原因所在!
zendstudio+xdebug断点时有效时无效
文章热词 设计制作学习 机器学习教程 Objective-C培训 交互设计视频教程 颜色模型
相关热词 mysql关联查询两次本表 native底部 react extjs glyph 图标 大数据开头视频下载 为什么学python