我正在开发一个简单的程序,它需要一个结构数组填充来自.dat文件的信息。我将简单地向您展示问题所在,而不是冗长的解释。
以下是相关代码:C ++,在Redhat中编译。
// Pre-main
struct Property{
string name;
int owner;
int cost;
int rent;
};
const int BOARD_SIZE = 45;
const string FILE_NAME = "MNinput.dat";
// Within main
ifstream inFile;
Property boardInfo[BOARD_SIZE];
int count = 0;
inFile.open(FILE_NAME.c_str());
while(count < BOARD_SIZE && getline(inFile, boardInfo[count].name)){
inFile >> boardInfo[count].owner
>> boardInfo[count].cost
>> boardInfo[count].rent;
count++;
}
for(int i = 0; i < count; i++){
cout << boardInfo[i].name << endl
<< boardInfo[i].owner << endl
<< boardInfo[i].cost << endl
<< boardInfo[i].rent << endl << endl;
}
我很肯定文件正常打开。
Here是数据文件(使用notepad ++或类似文件打开)
这是我得到的输出。我没有打印整个数组,而是获得以下内容
我再次确定文件正在正确打开,其余代码是正确的。但是,如果您想查看整个源代码文件,请询问。
如果您需要更多信息,请与我们联系。先谢谢!
编辑:按要求调试信息
尝试从.dat文件中删除所有空格。与以前完全相同的输出。
使用while(count < BOARD_SIZE && inFile >> boardInfo[count].name)
代替while(count < BOARD_SIZE && getline(inFile, boardInfo[count].name))
尝试 结果:.dat文件中有和没有空格
尝试从数据文件中加载少量条目,前3个 那么4然后5 以下是仅加载3个条目的结果(4个和5个条目产生类似的结果,数字序列替换所有实际值)。
答案 0 :(得分:0)
因为我正在混合inFile.ignore();
和getline(inFile, )
inFile >>
来清除文件流