2010-12-02 100 views
0

下面的程序应该在一堆从文件整数读取,并计算出它们的平均值:未能从文件中读取值

#include "stdafx.h" 
#include <iostream> 
#include <string> 
#include <fstream> 
using namespace std; 

int main(int argc, char** argv) 
{ 
    ifstream fin("mydata.txt"); 
    int i, value, sum = 0; 

    for (i = 0; fin >> value; i++) 
    { 
     sum += value; 
    } 

    if (i > 0) 
    { 
     ofstream fout("average.txt"); 
     fout << "Average: " << (sum/i) << endl; 
    } 
    else 
    { 
     cerr << "No list to average!" << endl; 
    } 

system("PAUSE"); 

} 

文件mydata.txt存在于同一个目录中,并包含1 2 3 4 5但输出总是:No list to average!

我在做什么错误,它总是跳过计算和输出文件生成部分?

感谢您的帮助,

^h

+1

你是什么意思同一个目录?在你的源文件?或者与构建的可执行文件相同?它在Linux中适用于我。 – Muggen 2010-12-02 16:40:39

+1

调用`fin.is_open()`来查看文件是否已被正确打开。 – detunized 2010-12-02 16:46:38

回答

1

我想mydata.txt与可执行文件不在同一目录下,代码适用于我

2

尝试使用绝对路径替换mydata.txt

4

您打开该文件后,添加一个assert语句,以确保你有正确的路径。

ifstream fin("mydata.txt"); 
assert(fin.good()); 

如果断言失败,您将知道文件路径可能有问题。