我正在讀取具有以下信息的原始網絡文件: 1. Arc ID 2.尾節點 3.頭節點使用ifstream對象讀取文件 - 二進制'>>':沒有找到需要類型爲'int *'的右側操作數的操作符
爲此,我寫了下列類型 - 弧(有1,2和3項)和網絡(有弧的元素和總節點和總弧的細節) 。這裏的定義是:
typedef struct {
int arcno;
int tail;
int head;
} arc_data;
typedef struct {
arc_data *arcs;
int numNodes;
int numArcs;
} network_data;
現在的代碼中,我聲明ifstream
對象文件,我讀的數據。這裏網絡是上面聲明的network_data
類型的對象。我將弧指定爲指針,因爲我不確定在讀取文件之前弧的總數是多少 - 因此需要動態更改弧的大小。
for(i = 1; i <= network.numArcs; i++) {
file >> &network.arcs[i].arcno;
file >> &network.arcs[i].tail;
但是,現在的代碼不是建立。我正在使用Visual Studio 2012.編譯器顯示以下錯誤:
Error 1 error C2679: binary '>>' : no operator found which takes a right-hand operand of type 'int *' (or there is no acceptable conversion)
51 file >> &network.arcs[i].head;
這裏有什麼問題?有沒有其他的方法比ifstream
來讀取文件?
編輯:在msdn圖書館看看建議,超載>>
運算符解決了這個問題。 (參考文獻:http://msdn.microsoft.com/en-us/library/h1925w4w%28v=vs.110%29.aspx)。任何人都可以幫我編寫重載函數嗎?