gpt4 book ai didi

c++ - 使用 vector 读取输入文件

转载 作者:行者123 更新时间:2023-11-28 03:37:50 25 4
gpt4 key购买 nike

我写了一个代码来读取下面的文件,但它不起作用。输入文件:

2 1 16
16 0 0
1 1 1234
16 0 0
1 1 2345

代码是:

std::ifstream input_file;
evl_wire wire;
int num_pins,width,cycles,no;
std::vector<int>IP;
while(input_file)
{
input_file >> num_pins;//num_pins=2
if (pins_.size() != num_pins) return false;
for (size_t i = 0; i < pins_.size(); ++i)
{
input_file >> width;//width=1 for 1=0 ,=16 for i=2
if (wire.width != width) return false;
pins_[i]->set_as_output();
}
for (size_t i = 1; i < file_name.size(); i=i+1)
input_file>>cycles;
input_file>>no;
pins_=IP;
}

哪里std::vector<pin *> pins_;在门类和void set_as_output();属于引脚类 2表示引脚数,1表示第一个引脚的宽度,16表示第二个引脚的宽度。 这里从文件 16 的第二行开始,没有周期引脚必须保持在 0 0,对于下一个周期引脚必须分配 1 和 1234 作为输入。

最佳答案

您的代码的某些部分几乎肯定是错误的。其他部分我不太确定 -- 它们对我来说意义不大,但也许我只是遗漏了一些东西。

while(input_file)

这几乎总是一个错误。它不会感知到文件的结尾,直到尝试从文件读取失败之后。在典型情况下,您的循环将比预期多执行一次迭代。你可能想要的是这样的:

while (input_file >> num_pins)

这会从文件中读取数据(或尝试读取数据),如果失败则退出循环。

if (pins_.size() != num_pins) return false;

这个不太清楚。如果我们已经知道它需要什么值,为什么我们要从文件中读取 num_pins 是完全不清楚的(对于 widthwire.width).

for (size_t i = 1; i < file_name.size(); i=i+1)
input_file>>cycles;

这是最让我费解的部分。保存文件名的字符串的大小与任何有什么关系?这让人相当困惑。

关于c++ - 使用 vector 读取输入文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10323187/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com