一个奇怪的问题,调试程序时,提示结构体的某个变量为"错误的指针",详见内容

scsnsjsl_cs_dn 2009-07-13 02:31:56
定义了结构体
struct stbase
{
int age;
std::string name;
std::string other;
};
然后
stbase st_data;
stbase *p = &st_data;//--------(一)
Func(binary_data, st_data);//--------(二)

调试运行到(一)时,还能看到st_data中的3个成员变量的值,
但是当执行(二)后,再看st_data中的成员变量,提示name一项 "错误的指针",同时也看不到他的值了

Func为把string数据转化为结构体的函数(该string数据是之前通过相应的函数转为string的)

请各位朋友指教!!!



...全文
131 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
stjay 2009-07-13
  • 打赏
  • 举报
回复
岂能这样乱用is.read((char*)&t,sizeof(t));
这样操作后,st_data里的name,other都会被填充、覆盖,这2个string就丢失了

struct还是用基本的数据类型吧
class里才用class成员
scsnsjsl_cs_dn 2009-07-13
  • 打赏
  • 举报
回复
那位大侠知道原因,请指教
scsnsjsl_cs_dn 2009-07-13
  • 打赏
  • 举报
回复
func函数为
bool Func(const std::string& s,stbase& t)
{
std::istringstream iss(s);
return is.read((char*)&t,sizeof(t));
}
scsnsjsl_cs_dn 2009-07-13
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 Ryanwen 的回复:]
源代码是怎么样的? age的值正确吗?是不是st_data出了作用域了
[/Quote]
你说的情况应该没有
Ryanwen 2009-07-13
  • 打赏
  • 举报
回复
源代码是怎么样的? age的值正确吗?是不是st_data出了作用域了
codecola 2009-07-13
  • 打赏
  • 举报
回复
Func有问题
dayong576 2009-07-13
  • 打赏
  • 举报
回复
建议如果是结构体的话,不要用CString类型的,用Char的
摘要:[目录]一、需求分析二、概要设计三、详细设计四、源代码:五、调试分析:六、运行结果分析:七、用户使用说明:八、收获及体会:[原文]一、需求分析1、本程序设计中,可以输入参加运动会学校编号及项目编号;根据具体情况选择输入参加项目的男女类别和取成绩名次类别;最后选择输入名次。2、演示程序以用户和计算机对话方式进行,即当用户双击鼠标左键后出现输入数据的对话框;在输入数据之后,用户可以进行查询成绩的操作,包括:按学校编号查询项目、按项目编号查询学校成绩;户还可以分别按学校编号、学校总分、男女团体总分排序输出数据,然后进行数据保存操作。3、本程序执行命令包括:1)输入数据2)查询相关记录3)按要求输出数据4)保存输出数据4、测试数据输入学校编号:1 2 4输入项目编号:1 3 2性别选择: 男 女 男取成绩名次: 前3名 前5名 前3名名次选择: 第1名 第4名 第2名5、测试结果以test.txt文件保存。(附在源程序中)二、概要设计1、本程序要求需要一个链表和一个叔数组结构来分别储存输入的数据;2、链表主要是储存:学校编号,项目编号,运动员性别,成绩;3、数组结构主要用于储存:学校编号,男团总分,女团总分和学校总分;三、详细设计1、数据结构a、链表:struct CMyList{ int itemnumber;//项目编号 CString schoolnumber;//学校 int sexul;// 项目性别 int score;//单项成绩int flag;//取名次标志}MyList[50],Mylist; 摘要:[页数]:16 [字数]:3217[目录]1 需求分析 2 概要设计3 详细设计4 调试分析总 结[摘要]在现在的许多大学或者高中小学生活学习中,体育锻炼越来越受到学校和国家的关注,而在学生当中,更是受到了大家的喜爱,于是每个学校都会有自己的体育运动会,各种各样的项目比赛,激烈非常。于是会出现的大量的比赛数据,需要各种统计及计算。因此,需要设计通用的运动会分数统计系统,对运动会中产生的各种数据进行统计。该系统可以迅速规范的统计出运动员间的分数对比,及进行名次排列,特别是在各学校之间的对比总分和排名,能快速且准确的描述了各个团体的实力对比,输入学校、运动员名后就可以快速的进行登记处理,在我们的传统运动会中,可以得到广大的应用。本文主要介绍了本课程设计的开发背景,所要完成的功能和开发的过程。重点说明了系统的设计思路、总体设计、各个功能模块的设计与实现方法。[正文]1 需求分析 在现在的许多大学或者高中小学生活学习中,体育锻炼越来越受到学校和国家的关注,而在学生当中,更是受到了大家的喜爱,于是每个学校都会有自己的体育运动会,各种各样的项目比赛,激烈非常。于是会出现的大量的比赛数据,需要各种统计及计算。因此,需要设计通用的运动会分数统计系统,对运动会中产生的各种数据进行统计。1.1 数据需求分析本演示程序中,学校编号要求为1~N,男子比赛项目编号要求为1~M,女子比赛项目编号要求为M+1~M+W。数据输入需注意格式的正确,详见用户手册说明。演示程序以人机对话的方式执行,即在计算机上显示提示信息后,由用户在键盘上输入对应的数据或命令,程序将执行相应的操作并显示下一步信息。1.2 功能需求分析(1)建立比赛数据;(2)显示各学校的成绩单; (3)显示各校团体总分报表。 2 概要设计每个程序中使用的存储结构设计说明(如果指定存储结构请写出该存储结构的定义,每个子函数实现的功能;各程序模块或子函数之间的调用关系。2.1 结构功能以结构数组来存储比赛数据,其基本操作为写入数据和查找数据。2.2本程序系统模块(1)主程序模块:main ( ) { 初始化; while(“命令”=“输入”){ 接受输入数据;处理数据; } while (“命令”=“浏览数据”) { 接受具体指令; 显示相应数据;[参考文献][1] 严蔚敏,吴伟民著.数据结构(C语言版)[M].北京:清华大学出版社, 1997.4. [2] 刘大有.数据结构[M].北京:高教出版社,2001. [3] 黄梯云.管理信息系统(修订版)[M].北京:高等教育出版社,2000年.[4] 齐德昱.算法与数据结构[M].北京:清华大学出版社,2003.10.[5] 徐孝凯,贺桂英著.C语言教程[M].北京:清华大学出版社,2004.[6] 杨秀 ...[ [原文]第一部分 运动会分数统计系统一、需求分析(1).可以输入各项目前三名的成绩。(2).能统计各学校总分。(3).可以按学校编号,学校总分、男女团队总分排序输出。(4).可以按学校编号查询学校某个项目的情况,可以按项目编号查询取得前三名的学校。(5).输出形式:有中文提示,各学校分数为整形。 界面要求:有合理的提示,每个功能可以设立菜单,根据提示,可以完成相关的功能。(6).储存结构:以顺序存储结构储存数据。二.概要设计1、数据类型定义struct scorelist { int score; /*分数*/ char schoolnum[5]; /*学校编号*/ int itemnum[5]; /*项目编号*/ }; /*定义分数结构体类型*/ struct School{ char schoolnum[5]; /*学校编号*/ struct scorelist list[M]; /*定义scorelist类型的结构体变量*/ int teamscore; /*学校分数*/ int mscore; /*男队分数*/ int gscore; /*女队分数*/}; /*定义学校结构体类型*/struct School school[M]; /*定义School类型的结构体数组*/2、系统功能的实现(1)、求学校总分,男队总分,女队总分函数: void sun(); 本算法实现学校总分,男队总分,女队总分,并分别保存到各学校的teamscore,mscore,gscore结构体成员中。(2)、按学校总分排序输出函数void sort_teamsore();本算法实现学校总分排序输出。

16,550

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧