Есть несколько проблем.Как уже упоминалось, вы возвращаетесь из середины вложенного цикла: конечно, не то, что вы хотите сделать.Кроме того, перед циклом вы читаете в матрицу [lines] [cols]: это неопределенное поведение, так как вы никогда не инициализировали строки и столбцы.(Как правило, вы даже не определяете их, пока в for, например: for (int lines = 0; lines <30; ++ lines) for (int cols = 0; cols <30; ++ cols).) Тем не менеестрока является синтаксически верной и читает первый непустой символ из ввода (в вашем случае, начальный #).И записывает это где-то, хотя никто не знает, где. </p>
Некоторые дополнительные комментарии: - Аргумент readfile должен быть char const *, а не char *.Или даже std :: string const &.
- я не уверен, что вы пытаетесь прочитать в матрице: откуда взялись 30 в своем определении?И не должно ли это быть "int matrix [x] [x]" или что-то в этом роде.Или, более вероятно: "std :: vector>".
- вы читаете целые числа (или как написано, один символ);точность не влияет.Это также не влияет на ввод.
- И что должен делать ifs.setf (ios :: fixed, ios :: showpoint).(Как это бывает, он почти наверняка устанавливает формат с плавающей запятой по умолчанию - а не фиксированный - хотя я думаю, что поведение формально не определено.) Не то чтобы это имеет значение;эти флаги также не влияют на ввод.
- "while (! ifs.eof ())" также определенно неверно.Выражение ifs.eof () надежно только после операция ввода завершилась неудачно.
Кроме того, вам понадобится специальная обработка для первой строки без комментариев и некоторые специальныеобработка первого символа в каждой строке.
- Джеймс Канзе