我有一个必须阅读文本文件的问题。取每一行数字,取平均数字,然后将这些数字推到向量上。
70 79 72 78 71 73 68 74 75 70
78 89 96 91 94 95 92 88 95 92
83 81 93 85 84 79 78 90 88 79
这只是一部分文件。我不知道如何将所有内容放进去,我确定这是没有必要的。
我已成功打开文件。我在网上到处到处都有关于如何阅读每一行并尝试平均数字的方法。但是,我总是以失败告终。我是C ++的初学者,非常抱歉,我不了解很多。
我如何从文件中取出每一行并将其平均以将其推到矢量上?
int main() {
string inFileName = "lab1.txt";
ifstream inFile;
vector<string> scores;
string myLine2;
openFile(inFile, inFileName);
getAvgofContents(inFile, myLine2);
}
void openFile(ifstream &file, string name){
file.open(name);
while (!file.is_open()) {
cout << "Unable to open default file/file path.\nPlease enter a new file/file path:" << endl;
cin >> name;
file.open(name);
}
cout << "FILE IS OPEN!!!\n";
}
void getAvgofContents(ifstream &file, string line){
while (file){
getline(file, line);
cout << line << endl;
}
}
I am supposed to get results like:
73
81.5
84.1
...
...
Then after averaging each line, push the results to a vector.
答案 0 :(得分:1)
这可能有帮助:
float getAvgOfLine(string line) {
float total = 0;
int count = 0;
stringstream stream(line);
while(1) {
int n;
stream >> n;
if(!stream)
break;
total += n;
count++;
}
if (count == 0) {
// the line has no number
return 0;
}
return total/count;
}
float getAvgofContents(ifstream &file, string line){
float total;
int number;
while (getline(file, line)){
cout << getAvgOfLine(line)<< endl;
}
}