2013-12-23 41 views
1

我想將行計數函數移到一個類中,但是,我收到了一些錯誤,我不知道如何使它工作。C++使用類來計算文件中的行數

class lines { 
     string name; 
     int number_of_lines; 
     string line; 
    public: 
     void set_value (string n); 
     ifstream myfile(name); //C2061: syntax error : identifier 'name' 
     while (getline(myfile, line)) //Multiple markers at this line - C2059: syntax error : 'while', - Syntax error 
     {       // C2334: unexpected token(s) preceding '{'; skipping apparent function body 
      ++number_of_lines; 
     } 
     int row() {return number_of_lines;} 
    }; 

void lines::set_value (string n) { 
number_of_lines=0; 
    name = n; 
} 

我將錯誤作爲註釋添加到它們顯示的行上。

+1

那一定有很多問題。 首先,你在函數聲明中使用變量名而不是類型。其次,你聲明瞭成員函數,然後做了一段代碼,我假設你打算作爲類定義中的成員函數定義。 – Bandrami

+0

保持簡單。使用緩衝輸入逐字節讀入雙字節緩衝區並檢查CR/LF/CRLF序列。 – Dariusz

回答

1

更改密碼

 string line; 
public: 
     void set_value (string n); 
     ifstream myfile(name); //C2061: syntax error : identifier 'name' 
     while (getline(myfile, line)) //Multiple markers at this line - C2059: syntax error : 'while', - Syntax error 
     {       // C2334: unexpected token(s) preceding '{'; skipping apparent function body 
      ++number_of_lines; 
     } 

到:

public: 
    void set_value (string name) 
    { 
     ifstream myfile(name); 
     string line; 
     while (getline(myfile, line)) 
     {    
      ++number_of_lines; 
     } 
     myfile.close(); 
    } 
+0

這似乎修復了while和name錯誤,但在第一個「{」括號處給出了一堆語法錯誤: - 語法錯誤 \t - C2059:語法錯誤:'{' - C2334:意外令牌(s )在'{'之前;跳過明顯的功能體。 – user2031585

+0

@ user2031585已修復。 – herohuyongtao

0

無論你在C++中做什麼操作/計算都必須在某個函數內,這裏你使用的是類內部的下面的語句,它必須在某個函數內部。

ifstream myfile(name); //C2061: syntax error : identifier 'name' 
     while (getline(myfile, line)) //Multiple markers at this line - C2059: syntax error : 'while', - Syntax error 
     {       // C2334: unexpected token(s) preceding '{'; skipping apparent function body 
      ++number_of_lines; 
     }