【问题标题】:Unable to open file and read from it无法打开文件并从中读取
【发布时间】:2019-07-11 14:29:46
【问题描述】:

我用“temperatures.txt”调用代码,这是一个格式如下的文件:

-9.3 -15.1

-9.0 -14.1

..

..

temps 也是一个结构体: int max,min; // 温度 最终的向量应该用于填充两条 open_polylines 并构造一个具有最高和最低温度的图形,但它会产生一个空窗口 --> 因此要返回的向量 (vec) 一定是空的

istream& operator>>(istream& is, Temps& t){
    //assume format (max----min)
    string c1="    ";
    Temps tt;

    is >> t.max >> t.min;
    //return is;}
    t=tt;
    return is;
}

vector<Temps> readTemp(string fileName){
    ifstream temp_file{fileName};
    Temps t;
    vector<Temps> vec;
    if(!temp_file){
        error("Can't open ", fileName);
    }
    
    while(temp_file>>t){
        cout<<t.max << t.min;
        vec.push_back(t);
    }
    return vec;
}

【问题讨论】:

标签: c++ file ifstream istream


【解决方案1】:

这段代码是错误的

istream& operator>>(istream& is, Temps& t){
    //assume format (max----min)
    string c1="    ";
    Temps tt;

    is >> t.max >> t.min;
    //return is;}
    t=tt;
    return is;
}

您将温度读入t,然后用tt 覆盖它们。就这样吧,不需要tt(或c1)。

istream& operator>>(istream& is, Temps& t){
    //assume format (max----min)
    return is >> t.max >> t.min;
}

【讨论】:

  • 谢谢,我更正了它,但它仍然拒绝打开“temperatures.txt”文件。可能与最高和最低温度之间的 4 个“空格”有关吗?
  • @MariElise 否,因为operator&gt;&gt; 会跳过空格。因此,如果您已修复 operator&gt;&gt;,则该错误可能在您调用 readTemp 之后的某个地方。换句话说,您没有在代码中的某个地方发布。这就是为什么最好发布完整的程序。
  • @MariElise 当您说它拒绝打开“temperatures.txt”时,您的意思是您看到了error("Can't open ", fileName); 消息吗?如果是这样,那只是您的 temparatures.txt 文件不在程序期望的位置。
猜你喜欢
  • 1970-01-01
  • 2011-11-19
  • 1970-01-01
  • 2022-12-09
  • 1970-01-01
  • 2011-05-11
  • 1970-01-01
  • 2016-11-11
  • 2022-08-13
相关资源
最近更新 更多