求助!我要用标准库读取一个ini文件,在open的时候就出错,是怎么回事啊?
我定义了一个类来描述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




