2014-11-16 13 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

Когда вы говорите, что вы «не можете его прочитать», что вы имеете в виду? Вы ничего не видите, когда вы cout << магия? – 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, можете ли вы объяснить, что «пока (myfile >> magic)» делает? – user3474409

+0

Все, что он делает, читает каждый символ из файла, включая пробелы, в переменную «char magic». Вам не нужно так поступать, но это короче, как я это сделал. См. Getline (...), если вы хотите по-другому. – Poriferous

Смежные вопросы