class 中的函数不带变量。但是 reads/prints 一个数组

Function in a class that doesn't take a variable. but reads/prints an array

nkgktgkrgktrgrgtjgiortjgiorjitrgoit

你可能做错了很多事情。

1) 文件 numbers.txt 不存在,此代码无法检查文件是否已成功打开。

2) 文件numbers.txt存在,但不包含十个以空格分隔的整数,此代码无法检查operator>>是否成功。

3) 此代码还将十个数字打印到 std::cout,没有任何分隔符。充其量,您将获得的输出看起来是一个大数字。

所以,这里至少有两三处是错误的。您需要修复所有这些问题:

A) 验证文件是否已成功打开。

B) 每次 operator>> 调用后,检查文件流是否为 good()

如果您不确定该文件是否存在,或者它是否与您的可执行文件位于同一目录中,请将您的代码修改为 check if the file opened,例如:

void readFile() {
    ifstream read("numbersd.txt");
    if(!read) { cerr << "File didn't open..Does it exist?" << endl; return; }
    ...

然后,如果它没有打开,可能会发生以下情况:

  1. 文件不存在。
  2. 文件不在您认为的路径中。
  3. 您无权访问该文件。

问题出在文件中,因为代码工作正常,因为 文件 numbers.txt 存在(并且它与您的可执行文件位于同一目录中)例如我使用了那个:

1
2
3
4
5
6
7
8
9
10

结果是:

C02QT2UBFVH6-lm:~ gsamaras$ g++ main.cpp
C02QT2UBFVH6-lm:~ gsamaras$ ./a.out
1 2 3 4 5 6 7 8 9 10 

这是我使用的代码:

#include <iostream>
#include <fstream>

using namespace std;

class myClass {
public:
    void readFile() {
        ifstream read("numbers.txt");
        for(int i=0;i<10;i++)
           read>>sPerDay[i];

        for (int i = 0;i<10;i++) {
           cout << sPerDay[i] << " ";
        }
       cout << "\n";
    }

private:
    int sPerDay[10];

};


int main() {
    myClass obj;
    obj.readFile();
    return 0;
}