[英]Object oriented programming get function doesn't return correct array
这是我有问题的代码。 它从文本文件中读取 pin 码,并应使用面向 object 的编程将它们保存到数组中。 当我尝试在 while 循环中显示值时,它可以正常工作,但是当我尝试在 while 循环之外执行时,它不起作用。 例如在倒数第二行 cout 不起作用。
#include "branjeDatoteke.h"
#include "parametri.h"
#include <iostream>
#include <fstream>
#include <string>
#include <cstring>
using namespace std;
void branjeDatoteke() {
Parametri pin[101];
string line;
ifstream myfile("pin.txt");
if (myfile.is_open())
{
for (int i = 0; i <= 100; i++) {
while (getline(myfile, line))
{
pin[i].setPin(line);
cout << pin[i].readPin() << endl;
//cout << line << '\n';
}
}
myfile.close();
cout <<"tole more delat: "<< pin[2].readPin() << endl;
}
else cout << "Unable to open file";
}
这是我的参数 class 的 CPP 文件
#include "parametri.h"
using namespace std;
#include <iostream>
void Parametri::setPin(string pin) {
this->pinKoda = pin;
}
string Parametri::readPin() {
return pinKoda;
}
你在一个循环中有一个循环......
随着第一次迭代
for (int i = 0; i <= 100; i++) { ... }
由于内部循环,您将读取文件的所有内容
while (getline(myfile, line))
外部for
循环的第二次迭代根本不会读取任何内容,接下来的 99 次迭代也不会。
这当然意味着pin[2]
(或实际上pin[1]
到pin[100]
)将被初始化。 只有pin[0]
会是,它会以文件中的最后一个值结束(因为内部的while
循环会一遍又一遍地覆盖它)。
您应该将代码更改为单个循环,可能是这样的:
for (int i = 0; i <= 100 && getline(myfile, line); i++)
{
pin[i].setPin(line);
}
请注意,此循环可能会在您填充pin
数组的所有元素之前结束。 如果文件中的数据更少(或更多),您可能应该有一个std::vector
而不是数组。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.