这是代码:
#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 ++中尝试过它。
答案 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行。欢呼声