所以我从输入操作符过载的文件中读取问题">>"
这是我的主要代码:
#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
有什么想法吗?