2014-11-16 186 views
0

我想讀取ppm文件並將其內容存儲在一個數組中。我開始嘗試顯示它,但我似乎無法輸出任何東西。閱讀ppm文件C++

char magic; 
ifstream myfile; 
myfile.open(file,ios::in | ios::binary); 
    if (!myfile.is_open()) 
    { 
     cout<<"Failed to open"; 
    } 
myfile.get(magic); 
if(myfile) cout <<magic <<"not working"; 
myfile.close(); 

該文件已打開,但無法讀取。我也曾嘗試通過使用< <運算符來輸出,但也沒有運氣。

+1

當你說你「看不懂」時,你是什麼意思?當你回答「魔法」時你沒有看到任何東西嗎? – Crummy

+0

什麼類型的PPM?你期待的魔術數字是多少?P1 - > P6? –

+0

這個答案可能會幫助你看到如何閱讀標題,但不知道你正在處理什麼類型的文件,我不能給你如何閱讀實際圖像數據的建議。 http://stackoverflow.com/a/20092028/920069 –

回答

0

您的文件很可能正在讀取,但您的變量並未存儲其中的所有值。我建議增加而不是myfile.get這個(魔術):

char magic; 
ifstream myfile; 

if (!myfile.open(file, ios::in | ios::binary) 
{ 
    cout << "Failed to open" << endl; 
} 

vector<char> magicNumbers; 
while (myfile >> magic) 
{ 
    magicNumbers.push_back(magic); 
} 
myfile.close(); 

正如你所看到的,你應該所有的值存儲在某些類型的數組,在這裏我使用靈活性的向量。其餘的由你決定。

+0

工作正常,但我認爲我也有我的ppm照片有問題,所以我下載了一個新的。謝謝@Vormeph! – user3474409

+0

對不起還有一個問題@Vormeph,你能解釋一下「while(myfile >> magic)」在做什麼嗎? – user3474409

+0

它所做的只是從文件中讀取每個字符,包括變量'char magic'中的空格。你不必這樣做,但它的實現方式更短。如果您需要其他方法,請參閱getline(...)。 – Poriferous