ifstream和重载运算符

时间:2016-11-21 01:28:48

标签: c++ ifstream

所以我从输入操作符过载的文件中读取问题">>"

这是我的主要代码:

#include <iostream>
#include "testHeader.h"
#include <vector>
#include "testHeader2.h"

using namespace std;

int main()
{
    std::ifstream inFile;
    inFile.open("inputfile.txt");
    vector<testHeader2> c;
    c.resize(5);
    inFile >> c[0];
    cout << c[0];
    cout << endl;
    c[0].setHeader2("AAAA", 120, 140, 150, 160, 170, 10000);
    cout << c[0];
    return 0;
}

这是我的头文件测试:

#ifndef TESTHEADER2_H_INCLUDED
#define TESTHEADER2_H_INCLUDED
#include <vector>
#include <fstream>
#include <iostream>
#include <iomanip>
#include "testHeader2.h"
class testHeader2
{
    private:
        std::string str;
        double d1,d2,d3,d4,d5,d6;
    public:
        void setHeader2(std::string mystr, double g, double b, double c, double d, double e, double f)
        {
            str = mystr;
            d1 = g;
            d2 = b;
            d3 = c;
            d4 = d;
            d5 = e;
            d6 = f;

        }
        friend std::ifstream& operator>> (std::ifstream& input, testHeader2& a)
        {
        input >> a.str
        >> a.d1
        >> a.d2
        >> a.d3
        >> a.d4
        >> a.d5
        >> a.d6;
        return input;
        }
        friend std::ostream& operator<< (std::ostream& output, const testHeader2 &a)
        {
        output << a.str << std::right << std::setprecision(2)
        << a.d1 << a.d2 <<
        a.d3 << a.d4 <<
        a.d5 << a.d6;
        return output;
        }

};

#endif // TESTHEADER2_H_INCLUDED

这是.txt

中的一行
AAAA 120 140 150 160 170 10000

我的输出重载似乎工作,使用setHeader2函数测试。

我做错了什么?它似乎在第一个字符串之后脱轨,因为它随后将随机值放入双值。它成功读取字符串,然后无法读取双打。任何人都可以解释这里出了什么问题吗?这些空间在某种程度上搞乱了吗?他们过去从未有过......

输出是: AAAA1.2e + 0021.4e + 0021.5e + 0021.6e + 0021.7e + 0021e + 004 AAAA1.2e + 0021.4e + 0021.5e + 0021.6e + 0021.7e + 0021e + 004

有什么想法吗?

0 个答案:

没有答案