Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
#1

Чтение из файла в массив string - C++

11.07.2013, 06:58. Просмотров 555. Ответов 7
Метки нет (Все метки)

Есть файл с 50 строками (в конце последней - '\n') и код чтения строк в массив string. При чтении идёт подсчёт считанных строк. Если количество строк в файле больше или равно размеру массива, то выход, из чтения файла, происходит при достижении равенства считанных строк и размера массива. Если же массив больше, чем количество строк в файле, то выход из чтения происходит при достижении конца файла. Как сделать, чтобы при размере массива не достаточном для считывания все строк из файла, выводилось предупреждение. В коде, предупреждение выводится и тогда, когда размер массива равен 50, т.е. достаточен для считывания всех строк из файла. В остальных случаях всё правильно.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#include <string>
#include <fstream>
#include <iostream>
#include <cstdlib>
using namespace std;
 
int main()
{
    const int N = 50;
    string arr[N];
 
    ifstream fin("50string.txt");
   
    if (!fin.is_open()) cout << "Error!\n";
    else
    {
        int n = 0;
        while (true)
        {
            getline(fin, arr[n]);
            if (fin.eof()) break;
            ++n;
            if (n == N) break;
        }
        
        for (int i = 0; i < n; ++i)
            cout << arr[i] << endl;
        
        cout << endl << "n = " << n << endl;
        
        if (!fin.eof() && n == N) cout << "\nThe array size is too small!\n" << endl;
        else cout << "\nSuccessful!\n" << endl;
        
        fin.close();
    }
    
    system("pause");
    return 0;
}
Вложения
Тип файла: txt 50string.txt (1.5 Кб, 4 просмотров)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.07.2013, 06:58     Чтение из файла в массив string
Посмотрите здесь:

Чтение из файла в массив структур (ошибка со string) - C++
Есть задача: считать из файла информацию в массив структур. Файл: Иван Иванов Иванович 18 1 2 8.6 Петр Петров Петрович 17 1 3...

string чтение из файла - C++
Надо считать из файла в массив символы которые лежат в скобках(по одному в каждых) Подскажите как сделать Добавлено через 1 час 31...

Чтение из файла в переменную типа string - C++
Добрый вечер! :) Вот делаю программу в одном из элементов которой нужно прочесть из файла в переменную типа string имя продукта так вот я...

Чтение файла целиком в std::string - C++
Как лучше сделать? Прочитать fread в char*, а потом перегнать, или открыть потоком и прочитать построчно? Символы \n и \r желательны, но не...

Чтение из файла в массив - C++
Здравствуйте, уважаемые программисты. Подскажите, пожалуйста. Есть текстовый файл примерно такого содержания: 15, 50, 30 155 ...

Чтение из файла в массив - C++
Есть файл, с которого надо считать данные. 12 56 14 10 8 6 35 48 Почему вылетает? #include &quot;stdafx.h&quot; #include &lt;iostream&gt; ...

Чтение из файла в массив - C++
Задача №6 Постройте программу, которая отслеживает пожертвования в Общество Защиты Влиятельных Лиц. Она должна запрашивать у пользователя...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
11.07.2013, 08:33  [ТС]     Чтение из файла в массив string #2
Какие есть идеи?
Hrobak
288 / 168 / 11
Регистрация: 22.03.2010
Сообщений: 483
Завершенные тесты: 1
11.07.2013, 10:12     Чтение из файла в массив string #3
У меня компилятор G++4.8.1, если что. Насколько я знаю, eofbit выставляется не при чтении последнего символа, а при попытке считать дальше. У вас же в цикле просто считываются все строки, но fin.eof() все равно false. Если перед if-кой добавить fin.get(); то будет ок.
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
11.07.2013, 10:18  [ТС]     Чтение из файла в массив string #4
Цитата Сообщение от Hrobak Посмотреть сообщение
то будет ок.
В каком смысле ок? Тут проблема не в eof().
Цитата Сообщение от alsav22 Посмотреть сообщение
Если же массив больше, чем количество строк в файле, то выход из чтения происходит при достижении конца файла.
Это всё работает.
Цитата Сообщение от Hrobak Посмотреть сообщение
Если перед if-кой добавить fin.get();
В какой строке предлагаете?
Hrobak
288 / 168 / 11
Регистрация: 22.03.2010
Сообщений: 483
Завершенные тесты: 1
11.07.2013, 10:20     Чтение из файла в массив string #5
Имел в виду, что обрабатывается корректно и случай с ровно 50 строчками (Successful!) и с бОльшим количеством (The array size is too small!).
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
11.07.2013, 10:25  [ТС]     Чтение из файла в массив string #6
Проверить недолго...
Цитата Сообщение от alsav22 Посмотреть сообщение
В какой строке предлагаете?
Добавлено через 1 минуту
А лучше код с дополнениями...
Hrobak
288 / 168 / 11
Регистрация: 22.03.2010
Сообщений: 483
Завершенные тесты: 1
11.07.2013, 10:25     Чтение из файла в массив string #7
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#include <string>
#include <fstream>
#include <iostream>
#include <cstdlib>
using namespace std;
 
int main()
{
    const int N = 50;
    string arr[N];
 
    ifstream fin("50string.txt");
 
    if (!fin.is_open()) cout << "Error!\n";
    else
    {
        int n = 0;
        while (true)
        {
            getline(fin, arr[n]);
            if (fin.eof()) break;
            ++n;
            if (n == N) break;
        }
 
        for (int i = 0; i < n; ++i)
            cout << arr[i] << endl;
 
        cout << endl << "n = " << n << endl;
        fin.get();
        if (!fin.eof() && n == N) cout << "\nThe array size is too small!\n" << endl;
        else cout << "\nSuccessful!\n" << endl;
 
        fin.close();
    }
 
    //system("pause");
    return 0;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.07.2013, 10:32     Чтение из файла в массив string
Еще ссылки по теме:

Чтение из файла в массив - C++
Всем привет! Извините, если такая тема уже поднималась, но я ничего не нашла.... У меня такая задачка. Есть два файлика, в одном матрица...

Чтение из файла в массив - C++
//--------------------------------------------------------------------------- #include &lt;clx.h&gt; #include &lt;stdio.h&gt; #pragma...

Считать из файла слова и занести их в массив string-ов - C++
Как считать слова из файла и занести их в массив типа string?

Чтение файла в массив строк - C++
Доброго времени суток!!! Как считать файл в массив строк? Заранее спасибо!!!

Чтение из файла в массив char - C++
Доброе время суток господа. У меня есть массив char a=&quot;I am text&quot; кпримеру, сама программа для работы с массивом написана. Но мне надо...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
11.07.2013, 10:32  [ТС]     Чтение из файла в массив string #8
Благодарю!
Yandex
Объявления
11.07.2013, 10:32     Чтение из файла в массив string
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru