C ++ читать из файла - PullRequest
       2

C ++ читать из файла

0 голосов
/ 20 января 2012

Как мне прочитать этот файл, если я знаю, сколько значений int находится после первого значения, но я не знаю, сколько значений после них Моя проблема, когда я должен прочитать строки, которые содержат 2 значения.

Редактировать: это мой файл

5
27
15
42
17
35
20 1
28 2
43 3

Вот что я попробовал:

fin >> n;
for (i=1; i<=n; i++)
    fin >> part[i];

while(!fin.eof())
{
    nrT++;
    fin >> tric[nrT][0];
    fin >> tric[nrT][1];
}

Ответы [ 5 ]

1 голос
/ 20 января 2012
for (int a,b; fin >> a >> b; nrT++)
{
    tric[nrT][0] = a;
    tric[nrT][1] = b;
}
0 голосов
/ 20 января 2012

Читайте построчно, ищите пробелы в строке. Если есть, используйте метод подстроки. Наконец, преобразуйте полученные подстроки в целые числа. В интернете множество примеров:

подстрока

Преобразование строки в целое число

Надеюсь, это поможет!

0 голосов
/ 20 января 2012

Во-первых, не используйте fin.eof().Эта функция полезна только после сбоя чтения.Однако должно работать что-то вроде следующего:

fin >> n;
if ( !fin || n > size( part ) ) {
    //  Error...
}
for ( i = 0; i != n; ++ i ) {
    fin >> part[i];
    if ( !fin ) {
        //  Error...
    }
}
while ( nrT < size( tric ) && fin >> tric[nrT][0] >> tric[nrT][1] ) {
    ++ nrT;
}

Для лучшей проверки вы можете прочитать файл построчно и извлечь один или два элемента из строки в зависимости от того, где вы находитесьфайл.Еще одним улучшением будет использование std::vector для контейнеров и push-back - таким образом, вам не нужно проверять границы.

0 голосов
/ 20 января 2012

Посмотрите на струнные потоки.(Я не знаю код с макушки головы).Они похожи на cin, но вы можете инициализировать их данными из файла.Затем вы можете использовать оператор >> для извлечения данных из него, и он знает, как извлечь целочисленное значение.

0 голосов
/ 20 января 2012

Обрабатывайте символ конца строки так же, как и символ пробела, и попробуйте проанализировать все, что не относится ни к одному из них. Если вы используете регулярные выражения с поддержкой Unicode , то уже есть группа, которая делает это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...