win32编程新手求教int型变量转换为字符串类型的问题
楼主win32编程新手一枚,刚接触win32编程,开发环境是vs2010,现在碰到这样一个问题:楼主在网上下载了一份win32编程写出来的俄罗斯方块原码,该原码内部有计分...
楼主win32编程新手一枚,刚接触win32编程,开发环境是vs2010,现在碰到这样一个问题:
楼主在网上下载了一份win32编程写出来的俄罗斯方块原码,该原码内部有计分功能,用int型变量score记录得分,但是并没有在窗口上显示。现在楼主想把这个score在窗口上显示出来,摸索过程如下:
PS:学渣新手,大神轻喷
1、首先想到的自然是TextOut()这个函数,这个函数写在WndProc()的case WM_PAINT里面
2、TextOut()这个函数只能输出字符串类型,所以想到要把int型的score强制转换为字符串类型
3、然后#include<string>,但是发现不管变换成#include<cstring>还是#include“string.h",用程序中string定义一个变量的时候都报错,更别说强制转换了。求解释一下这是为什么
4、既然不能用string,然后观察一下想到用LPSTR,用LPSTR定义的字符串如 LPSTR str="A"可以愉快的用TextOut()在窗口界面上显示,但是楼主如下写代码
LPSTR str=(LPSTR)score;
问题就出大了,虽然能够重新生成,但是一旦调试就会出现
RussianDiamonds.exe 中的 0x0f5ed540 (msvcr100d.dll) 处有未经处理的异常: 0xC0000005: 读取位置 0x00000000 时发生访问冲突 多个这样的异常
而且程序虽然能打开,但是一打开就停止工作。
这就说明我的思路是不对的,现楼主请求各路大神指点迷津:
1、上面种种错误的原因是什么?
2、楼主接下来应该怎么做才能把这个score记录的分数显示到窗口上?
感激不尽 展开
楼主在网上下载了一份win32编程写出来的俄罗斯方块原码,该原码内部有计分功能,用int型变量score记录得分,但是并没有在窗口上显示。现在楼主想把这个score在窗口上显示出来,摸索过程如下:
PS:学渣新手,大神轻喷
1、首先想到的自然是TextOut()这个函数,这个函数写在WndProc()的case WM_PAINT里面
2、TextOut()这个函数只能输出字符串类型,所以想到要把int型的score强制转换为字符串类型
3、然后#include<string>,但是发现不管变换成#include<cstring>还是#include“string.h",用程序中string定义一个变量的时候都报错,更别说强制转换了。求解释一下这是为什么
4、既然不能用string,然后观察一下想到用LPSTR,用LPSTR定义的字符串如 LPSTR str="A"可以愉快的用TextOut()在窗口界面上显示,但是楼主如下写代码
LPSTR str=(LPSTR)score;
问题就出大了,虽然能够重新生成,但是一旦调试就会出现
RussianDiamonds.exe 中的 0x0f5ed540 (msvcr100d.dll) 处有未经处理的异常: 0xC0000005: 读取位置 0x00000000 时发生访问冲突 多个这样的异常
而且程序虽然能打开,但是一打开就停止工作。
这就说明我的思路是不对的,现楼主请求各路大神指点迷津:
1、上面种种错误的原因是什么?
2、楼主接下来应该怎么做才能把这个score记录的分数显示到窗口上?
感激不尽 展开
1个回答
展开全部
win32编程碰得少,源代码也看不到,但说一下一个明显的问题:
LPSTR是个指针,LPSTR str=(LPSTR)score这样的转换是绝对非法的,即变成直接读取地址为score的内存(比如score的值是13200,那么获取str时就变成直接读取0x00003390的内存……这种操作是编程中的大忌)
看了一下,textout的里字符串的参数传递的是个指针,那么基本思路就是:
1、声明字符串变量(string.h只是一些工具函数,并不提供所谓string的数据类型;c的字符串是char[]。c++会有专门的数据类型但需要额外的头文件)
2、分配内存
3、用函数将int转换成字符串
4、textout进行显示
具体代码就帮不上了……
话说楼主如果对c/c++的基本概念比如指针之类不熟悉的话还是先打好基础吧,win32 api的上手还是很繁琐的
LPSTR是个指针,LPSTR str=(LPSTR)score这样的转换是绝对非法的,即变成直接读取地址为score的内存(比如score的值是13200,那么获取str时就变成直接读取0x00003390的内存……这种操作是编程中的大忌)
看了一下,textout的里字符串的参数传递的是个指针,那么基本思路就是:
1、声明字符串变量(string.h只是一些工具函数,并不提供所谓string的数据类型;c的字符串是char[]。c++会有专门的数据类型但需要额外的头文件)
2、分配内存
3、用函数将int转换成字符串
4、textout进行显示
具体代码就帮不上了……
话说楼主如果对c/c++的基本概念比如指针之类不熟悉的话还是先打好基础吧,win32 api的上手还是很繁琐的
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询