繁体   English   中英

从文件读取和存储属性会产生错误的输出

[英]Reading from file and storing attributes gives wrong output

我正在尝试读取包含以下三个属性的文本文件;

RouterID,X坐标,Y坐标

下面显示了txt文件的简短片段;

100 0       0
1   20.56   310.47
2   46.34   219.22
3   240.40  59.52
4   372.76  88.95

现在,我想要实现的是为每个RouterID创建一个节点并存储其相应的x和y坐标。 为此,我创建了以下类;

class Node {

public:
    float routerID;
    float x;
    float y;

    void set_rid (float routerID) {
        routerID = routerID;
    }

    void set_x_y (float x, float y) {
        x = x;
        y = y;
    }

};

我有以下执行为每个routerID创建一个新节点的工作;

const std::string fileName = "sampleInput.txt";
std::list<Node> nodeList;

int main (void) {

    std::ifstream infile(fileName);

    float a(0);
    float b(0), c(0);

    //This reads the file and makes new nodes associated with every input
    while (infile >> a >> b >> c) {
        Node newNode;
        newNode.set_rid (a);
        newNode.set_x_y (b, c);
        std::cout << "newNode " << "rid = " << newNode.routerID << " x = " << newNode.x << " y = " << newNode.y << std::endl;
        nodeList.push_back(newNode);
    }

我在while循环中执行以下行只是为了检查分配的值是否正确。

std::cout << "newNode " << "rid = " << newNode.routerID << " x = " << newNode.x << " y = " << newNode.y << std::endl;

当我编译并运行代码时,我得到以下作为我所有输出的输出;

newNode rid = -1.07374e+008 x = -1.07374e+008 y = -1.07374e+008

我上周刚开始学习C ++,这是我尝试编写的第一个“大”程序。 有谁能请我指出正确的方向?

void set_rid (float routerID) {
    routerID = routerID;
}

这不符合你的想象。 它将参数分配给自己; this->routerID的值保持不变。 set_x_y相同。 只需为方法参数指定一些与数据成员不同的名称。

另一个将类变量与输入参数区分开来的方法是使用关键字this。 因此,您可以通过调用this.routerID,this.x和this.y来引用类变量

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM