2015-12-13 32 views
1

我想讓我的outfile流成爲全局的,但結束了''outfile'沒有命名類型「的錯誤彈出。我試着做了一些谷歌搜索,但沒有與fstream的涉及..fstream'outfile'不會命名一個類型

我的代碼:

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

    using namespace std; 

    void determinepointer(string[],int,float[]); 
    void printresults(string[],float[],int,char[][9],int[]); 
    float calcGPA(float[],int[],int); 

    ofstream outfile; 
    outfile.open("StudentsTranscript.txt");//the problematic part 

    int main() 
    { 
     ifstream infile; 
     int coursenum; 

     infile.open("StudentsFile.txt"); 

     infile.ignore(40,'\t'); 
     infile>>coursenum; 

     char coursecode[coursenum][9]; 
     int credithr[coursenum]; 

     infile.ignore(13); 

     for (int i =0;i<coursenum;i++) 
     { 
      infile>>coursecode[i]; 
      infile.ignore(1); 

      if(coursecode[i][7]=='1') 
       credithr[i]=1; 
      else if(coursecode[i][7]=='2') 
       credithr[i]=2; 
      else if(coursecode[i][7]=='3') 
       credithr[i]=3; 
      else if(coursecode[i][7]=='4') 
       credithr[i]=4; 
      else 
      { 
       cout<<"invalid course code, please re-check & run this program again"; 
       exit(0); 
      } 
     } 

     infile.ignore(10,'\t'); 

     outfile<<"STUDENT'S INDIVIDUAL TRANSCRIPT\n\n"; 

     while(!infile.eof()) 
     { 
      char name[40]; 
      string grade[coursenum]; 
      float coursepointer[coursenum]; 
      infile.getline(name,40,'\t'); 
      outfile<<name<<endl; 

      for (int i =0;i<coursenum;i++) 
      { 
       infile>>grade[i]; 
       infile.ignore(2); 

      } 

      determinepointer(grade,coursenum,coursepointer); 
      printresults(grade,coursepointer,coursenum,coursecode,credithr); 

     } 

     infile.close(); 


     cout<<"done"; 

     return 0; 

    } 

**編碼過長,完整的代碼是在這裏:https://drive.google.com/file/d/0B_ir83gzFmIBQ0dXaGhPNXBJZkE/view?usp=sharing

回答

1

把聲明

outfile.open("StudentsTranscript.txt");//the problematic part 

裏面的主要功能。你可以在函數外部聲明變量,而不是使用它。

1

你可以這樣做@oLen暗示或(如果需要的outfile在全球範圍違抗,你可以做到以下幾點:

ofstream outfile("StudentsTranscript.txt");