文件读入C ++意外输出

时间:2014-01-11 19:19:05

标签: c++ iostream

这是代码:

#include<iostream>
#include<fstream>
#include<cstdlib>
#include<string>

using namespace std;

int grade; //declared globally because visual 2013 gives error if locally

int main() {

    ofstream outFile("C:\\Users\\Affan_000\\Desktop\\FileWrite.txt",ios::out);
    while (grade != -1){
        outFile << grade<<endl;
        cin >> grade;
    }
    outFile.close();

    return 0;
}

输入成绩后

  

80   50   60   40   90

当我打开文本文件时,零位于顶部:

  

0   80   50   60   40   90

我也在Dev-C ++中尝试过它。

4 个答案:

答案 0 :(得分:2)

除了第一次写作,然后才读取应该写的内容,你的代码不会检查输入是否成功:你应该在阅读之后检查读取是否成功

while (std::cin >> grade && grade != -1) {
    std::cout << grade << '\n';
}

答案 1 :(得分:1)

这并不奇怪,因为在while循环中,您在将用户输入放入其中之前打印grade。在 cin >> grade;之前移动outFile << grade << endl;语句,就可以了。

但是,现在您需要检查它是否确实与-1不同,因此您的最终循环将如下所示:

while (1) {
    cin >> grade;

    if (grade != -1)
        outFile << grade << endl;
    else
        break;
}

答案 2 :(得分:1)

输入了

0因为你有书面陈述 outFile << grade<<endl; 在获取等级全局变量的输入之前 因此,在第一次迭代中插入0,因为全局变量的默认值为0 如果你没有初始化它们。所以在写cin>>grade;之前写outFile << grade<<endl;

答案 3 :(得分:-1)

只需交换cin和cout行。欢呼声