我有我不能改變的輸入文件,具有略微不同線從輸入文件C++讀取與istream的操作符重載
Supercar HTT Technologies 10 2
Motorcycle Honda 40 1
...
我爲了中的值讀入我的數據重載>>操作符結構,主要內容如下:
class Vehicles{
private:
string type; //type of vehicle, i.e. car/motorcycle
string manufacturer;
string manufacturer2ndPart //not a good idea, but this is what I'm using
//to get the second part of the manufacturer ("Technologies")
int milesPerGallon;
int numPrevOwn //number of previous owners
public:
...
friend istream &operator >> (istream &is, Vehicles &Vec){
is >> Vec.type >> Vec.manufacturer >> Vec.milesPerGallon >> Vec.numPrevOwn;
return is;
}
};
這對第一線工作正常,但打破了輸入文件的第二行,因爲它試圖「40」讀成manufacturer2,而不是milesPerGallon。解決這個問題最好的辦法是什麼?我想避免手動讀取所有內容,因爲這會破壞操作員重載的目的。
剛剛編輯了一下這篇文章。第一行讀入並輸出完全正常。第二行讀入字符串「manufacturer2ndPart」中的「40」,而不是讀入int milesPerGallon,從而使numPrevOwn成爲內存中的任何值。 –
這些值是如何分開的? – Jonas
您必須知道輸入文件的格式。例如,你怎麼知道它沒有與製造商「技術」一起輸入「Supercar HTT」?應該有一條規則,例如「列至少分隔2個空格」或「列總是14個字符寬」 – nwp