从.dat文件C ++填充结构数组

时间:2014-03-07 20:30:34

标签: c++ arrays struct fstream

我正在开发一个简单的程序,它需要一个结构数组填充来自.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 ++或类似文件打开)

这是我得到的输出。我没有打印整个数组,而是获得以下内容

Output for code as shown

我再次确定文件正在正确打开,其余代码是正确的。但是,如果您想查看整个源代码文件,请询问。

如果您需要更多信息,请与我们联系。先谢谢!

编辑:按要求调试信息

尝试从.dat文件中删除所有空格。与以前完全相同的输出。

使用while(count < BOARD_SIZE && inFile >> boardInfo[count].name)代替while(count < BOARD_SIZE && getline(inFile, boardInfo[count].name))

尝试 结果:.dat文件中有和没有空格

enter image description here

尝试从数据文件中加载少量条目,前3个  那么4然后5 以下是仅加载3个条目的结果(4个和5个条目产生类似的结果,数字序列替换所有实际值)。

enter image description here

1 个答案:

答案 0 :(得分:0)

因为我正在混合inFile.ignore();getline(inFile, )

,我需要设置inFile >>来清除文件流