我正在读取包含以下信息的原始网络文件: 1. Arc ID 2. 尾节点 3. 头节点
为此,我写出了以下类型 - 弧(具有项目 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 是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)。任何人都可以帮我编写重载函数吗?