CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C/C++ >  C++ 语言

求助!我要用标准库读取一个ini文件,在open的时候就出错,是怎么回事啊?

楼主_corsair(海盗船)2005-03-04 19:23:57 在 C/C++ / C++ 语言 提问

我定义了一个类来描述ini文件,其中有一个  
   
  char   FileName[MAX_FILENAME];  
   
  和  
   
  ifstream   File;  
   
  在一个成员函数里,有这么一行:  
   
  File.open(FileName,   ios   ::   in);  
   
  在这之前File是没有动过的,并且FileName正确的赋值了。  
  调试发现就是这一行出错,在vc++6.0下编译运行时说  
   
  “xxx指令引用的xxxx地址,该地址不能为"written"。”  
   
  在tc++   3.0下编译运行就干脆强制退出了。  
  这是怎么回事啊?我觉得我的代码没错阿... 问题点数:0、回复次数:12Top

1 楼catally(Complicated)回复于 2005-03-04 19:27:55 得分 0

应该是溢出了Top

2 楼CMyMfc(星际人生:=E.F=FlyForEver)回复于 2005-03-04 19:32:49 得分 0

读INI不用自己写  
  windows提供了解析函数  
  GetPrivateProfileInt  
  GetPrivateProfileSection  
  GetPrivateProfileSectionNames  
  GetPrivateProfileString  
  GetPrivateProfileStruct  
  等等  
  当然也提供了写函数  
  writeXXXXX系列Top

3 楼CMyMfc(星际人生:=E.F=FlyForEver)回复于 2005-03-04 19:35:51 得分 0

多贴点代码出来Top

4 楼pcboyxhy(-273.15℃)回复于 2005-03-04 19:40:29 得分 0

这样就大大破坏移植性了。  
  程序代码也不见得简化了Top

5 楼_corsair(海盗船)回复于 2005-03-04 19:45:13 得分 0

是啊,我只想用标准库...  
   
  ini文件的定义:  
  class   CDataFile  
  {  
  private:  
  char                 FileName[128];  
  int                   FieldCount;  
   
  ifstream         File;  
   
  int   scanAndSetupFile();  
  public:  
  CDataField*   Field;  
   
  CDataFile(){}  
  CDataFile(char*   FileName_);  
  ~CDataFile();  
  };  
  //----------------------------------------------  
  构造函数:  
  inline   CDataFile   ::   CDataFile(char*   FileName_)  
  {  
  if(!strcpy(FileName,FileName_))  
  cout   <<   "strcpy   error!"   <<   '\n';  
  if(!scanAndSetupFile())  
  {  
  cout   <<   "scanAndSetupFile   error!"   <<   '\n';  
  exit(1);  
  }  
  }  
  //---------------------------------------------  
   
  scanAndSetupFile()的开头一部分:  
  int   CDataFile   ::   scanAndSetupFile()  
  {  
  File.open(FileName,   ios   ::   in);  
  if(!File)  
  {  
  cout   <<   "Error   reading   datafile   "   <<   FileName   <<   '.'   <<   '\n';  
  return   0;  
  }  
    .  
    .  
    .Top

6 楼_corsair(海盗船)回复于 2005-03-05 18:34:20 得分 0

大家帮帮我啊...Top

7 楼pcboyxhy(-273.15℃)回复于 2005-03-05 20:24:56 得分 0

指针初始化了没有?Top

8 楼bing_huo(我是一个演员!)回复于 2005-03-05 20:51:27 得分 0

char                 FileName[128];   //标准长度应该是   MAX_PATH  
   
  File.open(FileName,   ios   ::   in);   //ios::in   应该是   ios_base::in  
   
  你改下看看  
   
   
  Top

9 楼_corsair(海盗船)回复于 2005-03-06 14:35:52 得分 0

还是不行啊...  
  不会是标准库有问题吧...Top

10 楼whyglinux(山青水秀)回复于 2005-03-06 17:07:55 得分 0

File   Class不属于C++标准库。  
   
  File.Open的用法你应该查一查其文档说明,看看是否允许ios::in这样的用法。Top

11 楼fesco(fesco)回复于 2005-03-06 17:49:43 得分 0

我这边好象没问题,你跟踪一下是不是filename传递过来的文件名是否正确,good   luck  
  Top

12 楼_corsair(海盗船)回复于 2005-03-07 20:14:42 得分 0

我用   ios_base::in   编译器说未定义,难道除了   fstream.h   以外还要包含其他文件么?Top

相关问题

  • MessageBox出错,怎么回事?
  • DropDownList.Items.Add 出错,怎么回事?
  • CoCreateInstance出错,怎么回事
  • INSERT INTO 语句出错,怎么回事?
  • 这个出错是怎么回事?
  • 内存出错,怎么回事?
  • 安装PACK2出错了,怎么回事?
  • Query.Edit出错是怎么回事??
  • 加上&就出错,怎么回事?
  • truncate table 出错是怎么回事?

关键词

  • 函数
  • 文件
  • cdatafile
  • ini文件
  • filename
  • char

得分解答快速导航

  • 帖主:_corsair

相关链接

  • C/C++ Blog
  • C/C++类图书
  • C/C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo