2013-07-26 3 views
0

Я пытаюсь изучить некоторые методы чтения из файлов на C++, и я придумал этот пример.Некоторые методы чтения из txt-файлов

Предположим следующее содержание текстового файла, который я хочу прочитать от

A 
1 2 3 
4 5 6 
7 8 9 

B 
1 2 3 
4 5 6 
7 8 9 

Итак, что я хочу сделать здесь является то, что если мы читаем, тогда мы начинаем читать матрицу A снизу и сохраните их в [i] [j]. И то же самое для Б. В других обстоятельствах мы воспринимаем их как исключение, которое сейчас нас не волнует.

Проблема для меня теперь является смешанным чтением. Я знаю, как читать целое число и как читать строки из файла отдельно, как глупый способ while(fin>>it). но может ли кто-нибудь сказать мне быстрый способ такого смешанного чтения, что мне не нужно объявлять несколько переменных чтения (типа), таких как строка и int?

Например, я знаю, как читать целое число в целой строке и не знаю обработчика новой строки, что означает, что я не знаю, как узнать, достигли ли мы конца строки или что-то вроде этого:

ifstream fin; 
fin.open(infilename); 
int it; 
int arr[3][3]; 
int i=0, j=0; 
while(fin>>it){ 
    arr[i][j]=it; 
     `\\I am confused at this place and don't know how to write the condition` 
} 
fin.close(); 

Кроме того, поскольку существует как символ и целого типа, я должен объявить char? и как работает fin>>char? чтение символа символом в строке или что-то еще? Я буду очень признателен, если кто-то может направить меня на это! Благодаря!

+1

Можете ли вы разместить свой код, пожалуйста? Благодарю. –

+0

Конечно, подождите минутку :) – Cancan

ответ

0

Вам не нужно беспокоиться о новых символах, так как >> пропускает пробелы и символы перевода строки. Тем не менее, добавление fin >> в состояние while усложняет ситуацию, если вы хотите использовать разные типы данных. Вместо этого вы могли бы прочитать символ, представляющий каждую матрицу, затем в пределах цикла, считанного от ребра до матрицы:

char c; 
int mat[3][3]; 

while (fin>>c){ 
    //save c somewhere 
    fin>>mat[0][0]>>mat[0][1]>>mat[0][2]; 
    fin>>mat[1][0]>>....; 
    fin>>mat[2][0]>>....; 
    //store mat 
} 
Смежные вопросы