2014-04-16 105 views
1

我剛剛開始學習OpenGL,但遇到了一個小問題。我寫了一個自定義函數來讀取文件中的着色器,在這裏它是。你可以看到,在將指針移動到文件尾部後,我使用is.tellg()來獲取文件的大小。然而,在一個簡單的着色器中,它顯示的數量超過實際的數量。 的#Version 150文本文件的長度

in vec4 pos; 

void main() 
{ 
    gl_Position = pos; 
} 

在此,大小應爲66(I手動計數,我可能會脫被1或2個字符)。然而,它顯示爲73.我認爲\ n \ r被理解爲\ n可能與錯誤的字符數有關,但我不確定。

無論哪種方式,我的問題是,爲什麼我會得到錯誤的計數,以及如何正確地得到它。

注:我知道其他方法來計算文件的大小,或更好的是,直接讀取std :: string中的內容,然後將它們轉換爲char *,但我想知道什麼此代碼中的問題是,以及我如何解決它。

+0

問題是在系統中的文本文件上使用二進制文件的功能,這些文件不相同。 – Deduplicator

回答

1

您不計算6個回車符和一個製表符(它們合計7個字符),但是tellg()可以。

+0

實際上,它不是一個標籤,它是4個空格 - 這就是我配置我的Notepad ++的方式。但無論哪種方式,我都猜到了,7回車可能是原因。謹慎回答我的下一部分問題? :P – user3541787

+0

記事本++ _displays_一個標籤爲4個空格,但實際上它只存儲爲一個標籤字符。 –

+0

將文本讀入緩衝區並自己計算字符數? (跳過\ t,\ n和\ r等等......) –