不带变量的类中的函数。但读取/打印数组



所以我有一个类:

class myClass {
public:
    void readFile();
private:
    int sPerDay[10];
};

我想要这个函数来读取/打印文本文件的数组(一堆10行长的数字)

void myClass::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];
    }
}

输出是一堆随机数。我哪里错了?

如果您不确定文件是否存在,或者它是否与可执行文件在同一目录中,请修改代码以检查文件是否打开,例如:

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;
}

您可能做错了很多事情。

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

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

3) 此代码还将10个数字打印到std::cout,不带任何分隔字符。在最好的情况下,您将得到的输出看起来是第一行的大数字。

所以,这里至少有两三件事是错误的。你需要修复所有这些:

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

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

相关内容

  • 没有找到相关文章

最新更新