在没有变量的类中的函数。但读取/打印数组

时间:2016-07-19 01:45:04

标签: c++ file io fstream

nkgktgkrgktrgrgtjgiortjgiorjitrgoit

2 个答案:

答案 0 :(得分:0)

你可能做错了很多事。

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

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

3)此代码还向std::cout打印十个数字,没有任何分隔符。最好的情况是,你得到的输出就是一个大数字。

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

A)确认文件已成功打开。

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

答案 1 :(得分:0)

如果您不确定该文件是否存在,或者它是否与您的可执行文件位于同一目录中,请将您的代码修改为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. 您无权访问该文件。
  4. 问题在于文件,因为代码工作正常,因为文件 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;
    }