【问题标题】:Reading a file into a struct array将文件读入结构数组
【发布时间】:2016-06-11 23:13:19
【问题描述】:

在没有 eof 的情况下将文件读入结构时遇到问题。我的 .h 文件中包含所有需要的内容,但我收到一条错误消息,提示“IntelliSense:没有运算符“>>”与这些操作数匹配”

struct Courses
{
    string mCourseID;
    double mCourseNumber;
    double mMaxCapacity;
    double mCurrentEnroled;
};

Courses addCourse(istream &File);


Courses addCourse(istream &File)
{
    Courses sData;

    File >> sData.mCourseID;
    File >> sData.mCourseNumber;
    File >> sData.mCurrentEnroled;
    File >> sData.mMaxCapacity;

    return sData;
 }

void readCourses(Courses sCourses[], ifstream &File, int &numCourses)
{
    while (addCourse(File) >> sCourses[numCourses])
    {

        numCourses++;
    }
}

【问题讨论】:

  • 请发MVCE
  • 改addCourse()的原型可以吗?
  • 伙计,这个程序太学术了,很多事情都可能出错,他们不希望你处理。

标签: c++ arrays file struct


【解决方案1】:

我想,你想把addCourse的签名改成这个……

istream& addCourse(istream &File, Courses& sData)
{
    File >> sData.mCourseID;
    File >> sData.mCourseNumber;
    File >> sData.mCurrentEnroled;
    File >> sData.mMaxCapacity;

    return File;
}

然后,用这些修改来修改你的其他函数...

void readCourses(Courses sCourses[], ifstream &File, int &numCourses)
{
    while (addCourse(File, sCourses[numCourses]))
    {
        numCourses++;
    }
 //......

但同样,您的数组sCourses 是否足够大以容纳您将输入的Courses?或者你会设置一个停止条件? ...重新考虑您的程序逻辑。

【讨论】:

  • 成功了!非常感谢!限制十门课程,应该没问题!
猜你喜欢
  • 2013-12-11
  • 1970-01-01
  • 1970-01-01
  • 2013-12-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-14
  • 1970-01-01
相关资源
最近更新 更多