這裏是輸入文件:試圖把數字變成變量從ifstream的文件
Attendance: 5
Midterm: 20
Final: 20
Homework: 15
Projects: 40
Mc Pherson, David Patrick
Attendance: 12 15
Midterm: 80 100
Homework: 50 100
Homework: 60 100
Homework: 80 100
Project: 90 100
Project: 80 100
Project: 75 100
Final: 80 100
我正在跟做的是這個輸入文件,然後把它通過將輸出成績冊代碼負責。我目前所堅持的部分是試圖將這些數字轉化爲變量並在它們之前跳過這些單詞。我嘗試使用cin.ignore(),但這不起作用,或者至少在我的實現它。
我該如何去做這樣的事情?
編輯:對於那些,問這裏是我的代碼。主文件:
//This file tests out gradebook.h
#include <iostream>
#include <fstream>
#include "gradebook.h"
using namespace std;
int main()
{
ifstream in ("gradebook.txt");
ostream out ("grades.txt");
while (!in.fail()) //tests to see if there are any more numbers coming in from resistors.h
{
//process input
gradebook (in, cout);
}
in.close();
return 0;
}
這裏是我的其他的文件:
//This program will format a gradebook
#include <iostream>
#include <vector>
#include <string>
#include <cmath>
using namespace std;
void gradebook (istream& in, ostream& out)
{
string firstname[2];
string lastname[2];
string dummy;
//header for table
int projwe;
int hwwe;
int attendwe;
int midwe;
int finalwe;
int attendgr[2];
int midgr[2];
int hwgr1[2];
int hwgr2[2];
int hwgr3[2];
int projgr1[2];
int projgr2[2];
int projgr3[2];
int finalgr[2];
int attendgrade;
int hwgrade1;
int hwgrade2;
int hwgrade3;
int projgrade1;
int projgrade2;
int projgrade3;
int midtermgrade;
int finalsgrade;
double averagegr;
//weights for each category
in >> dummy >> attendwe;
in >> dummy >> midwe;
in >> dummy >> finalwe;
in >> dummy >> hwwe;
in >> dummy >> projwe;
in >> firstname[2];
in >> lastname[2];
in >> dummy >> attendgr[2];
in >> dummy >> midgr[2];
in >> dummy >> hwgr1[2];
in >> dummy >> hwgr2[2];
in >> dummy >> hwgr3[2];
in >> dummy >> projgr1[2];
in >> dummy >> projgr2[2];
in >> dummy >> projgr3[2];
in >> dummy >> finalgr[2];
//loads words and weights into above variables
attendgrade = ((attendgr[0]*attendwe) + (attendgr[1]*attendwe))/2;
//calculates the overall attendance grade
hwgrade1 = ((hwgr1[0]*hwwe) + (hwgr1[1]*hwwe)) /2;
hwgrade2 = ((hwgr2[0]*hwwe) + (hwgr2[1]*hwwe)) /2;
hwgrade3 = ((hwgr3[0]*hwwe) + (hwgr3[1]*hwwe)) /2;
//calculates the overall homework grade
projgrade1 = ((projgr1[0]*projwe) + (projgr1[1]*projwe)) /2;
projgrade2 = ((projgr2[0]*projwe) + (projgr2[1]*projwe)) /2;
projgrade3 = ((projgr3[0]*projwe) + (projgr3[1]*projwe)) /2;
//calculates the overall project grade
midtermgrade = ((midgr[0]*midwe) + (midgr[1]*midwe)) /2;
//calculates the overall midterm grade
finalsgrade = ((finalgr[0]*finalwe) + (finalgr[1]*finalwe)) /2;
//calculates the overall finals grade
averagegr = (finalsgrade + midtermgrade + projgrade1 + projgrade2 + projgrade3 + hwgrade1 + hwgrade2 + hwgrade3 + attendgrade)/9;
//calculates the average grade
out << "LastName" << "," << "FirstName" << "," << "HW1" << "," << "HW2" << "," << "HW3" << ","
<< "Proj1" << "," << "Proj2" << "," << "Proj3" << "," << "Midterm" << "," << "Final" << "," << "Average" << endl;
//outputs the header for the table
out << firstname << "," << lastname << "," << attendgrade << "," << hwgrade1 << "," << hwgrade2 << "," << hwgrade3 << ","
<< projgrade1 << "," << projgrade2 << "," << projgrade3 << "," << midtermgrade << "," << finalsgrade << "," << averagegr << endl;
//outputs the numbers in the table
}
現在我得到一個奇怪的錯誤,這是在主要的10號線:
error C2664: 'std::basic_ostream<_Elem,_Traits>::basic_ostream(std::basic_streambuf<_Elem,_Traits> *,bool)' : cannot convert parameter 1 from 'const char [11] to std::basic_streambuf<+Elem,_Traits> *'
你應該發佈你試過的代碼,否則這看起來像是一個「爲我寫代碼」的問題。 – crashmstr
您也可以發佈輸入文件的規格。我無法從你提供的小樣本中找出它。 (這些數字之前的單詞看起來很重要,在這種情況下,你不想跳過它們,但也要閱讀它們。) –
你可以*不*寫這麼多的代碼,並期望它工作。從小而簡單的開始,然後逐步建立起來,進行測試。無論如何,你不清楚'ostream out(「grades.txt」)是什麼意思,'',因爲你再也不用'out'了,但是你不能用這種方式構建'ostream'。也許你的意思是'ofstream'。 – Beta