Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/55: Рейтинг темы: голосов - 55, средняя оценка - 4.75
 Аватар для Nullik
46 / 15 / 4
Регистрация: 13.03.2013
Сообщений: 302

Построчное считывание файла txt в массив

29.08.2013, 14:53. Показов 11849. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день.

Пытаюсь вспомнить "как там считывать из файла", вроде бы делала, но давно это было.
Сейчас сижу, кручу-верчу, а понять не могу -- почему не работает?

Суть программы такая: есть файл hero.txt, в этом файле есть 5 строчек

герой 1
герой 2
герой 3
герой 4
герой 5

Мне нужно построчно считать из файла, каждую строчку записать в массив.

Что есть:

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
40
#include "stdafx.h"
 
#include <iostream>
#include <fstream>
#include <string> 
#include <Windows.h>
#include <ctime> 
 
using namespace std; 
 
int main() 
{ 
    //SetConsoleCP(1251);
    //SetConsoleOutputCP(1251);
    setlocale(0,""); 
 
    int i=0;
    string Hero[10];
 
 
    // чтение файла и вывод на экран
    // объявление переменной
    ifstream in_file;
    in_file.open("hero.txt");
 
        // пока не конец файла
        while (!in_file.eof())
        {
            in_file >> Hero[i];
 
            // вывод считанной переменной на экран
            cout << Hero[i] << endl;
            i++;
        }
    // закрытие потока
    in_file.close();
 
    cin.get(); 
    return 0; 
}
И у меня цикл while уходит в какую-то бесконечность... Хотя в файле строго 5 строчек. Что делать и как быть?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
29.08.2013, 14:53
Ответы с готовыми решениями:

Построчное считывание файла txt в массив
Мне нужно сделать так чтобы у меня считывались строки из моего TXT файла в массив, данные в нем записаны таким образом ...

Считывание .txt файла в динамический массив и вывод на экран
Здравствуйте! Возникла проблема с написанием кода. Программа должна считывать текст из файла и выводить его на экран. Компилятор ругается...

Построчное считывание файла
В файле у меня все строки вида: \x53\x74\x69\x6C\x6C\x2E\x2E\x2E\x00 Код считывающий файл построчно: ifstream i(&quot;first.dlg&quot;);...

9
В астрале
Эксперт С++
 Аватар для ForEveR
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
29.08.2013, 15:02
Nullik, Используйте std::getline.
C++
1
in_file >> Hero[i];
Должно быть
C++
1
std::getline(in_file, Hero[i]);
1
погромист
 Аватар для coloc
415 / 251 / 30
Регистрация: 27.08.2012
Сообщений: 550
29.08.2013, 15:03
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
#include <vector>
#include <fstream>
 
int main() {
    std::vector< std::string > name;
    std::fstream file( "hero.txt" );
    
    std::string temp;
    while( !file.eof() ) {
        std::getline( file, temp );
        name.push_back( temp );
        std::cout << temp << std::endl;
    }
    return 0;
}
1
 Аватар для Nullik
46 / 15 / 4
Регистрация: 13.03.2013
Сообщений: 302
29.08.2013, 15:26  [ТС]
ForEveR, заменила так, как вы сказали, пишет вот что:

Необработанное исключение в "0x67f61f68 (msvcp100d.dll)" в "Random story 1.1.0.0.exe": 0xC0000005: Нарушение прав доступа при чтении "0xcccccccc".
Ошибок нет, только при запуске, видимо, цикл while ушёл всё же в бесконечность.

coloc, на сколько я поняла, вы считываете сначала в переменную, потом эту переменную в массив (я потом хочу сделать динамический массив, можно и вектор, не принципиально). А можно ли сразу записать в массив избегая создания ещё одной переменной?
*точно, ещё дна переменная)) -- взяла ваш вариант на заметку

Добавлено через 9 минут
О госспади, решила проблему!
Оказывается, я не туда поместила файл hero.txt (он был в папке debug), а надо было в папку с именем проекта)))

ForEveR, большое спасибо, всё работает корректно!
0
5500 / 4895 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
29.08.2013, 17:06
Цитата Сообщение от Nullik Посмотреть сообщение
Оказывается, я не туда поместила файл hero.txt (он был в папке debug), а надо было в папку с именем проекта)))
Чтобы избежать таких ошибок, при открытии файла для чтения, всегда нужно делать проверку открытия файла:
C++
1
2
3
4
5
ifstream in_file;
in_file.open("hero.txt");
if (!in_file.is_open()) cout << "Error!" << endl;
else
{...
1
10 / 10 / 1
Регистрация: 27.06.2013
Сообщений: 151
29.08.2013, 17:10
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <stdio.h>
#include <iostream>
#include <string>
using std::string;
 
int main (void) {
freopen("hero.txt","r",stdin);
string s[5];
for(int i=0; 5-i; i++) std::cin >> s[i];
// ........ что-то делаете с данными .....
return 0;
}
1
347 / 292 / 37
Регистрация: 23.03.2012
Сообщений: 838
29.08.2013, 18:33
Цитата Сообщение от alsav22 Посмотреть сообщение
Чтобы избежать таких ошибок, при открытии файла для чтения, всегда нужно делать проверку открытия файла:
Можно вместо проверки бита конца файла делать проверку http://www.cplusplus.com/reference/ios/ios/good/
0
5500 / 4895 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
29.08.2013, 18:57
Цитата Сообщение от Nekto Посмотреть сообщение
Можно вместо проверки бита конца файла делать проверку
А где у меня проверка конца файла?
0
В астрале
Эксперт С++
 Аватар для ForEveR
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
29.08.2013, 19:06
alsav22, Имеется ввиду, что проверять на открытие необязательно. Можно просто
C++
1
while (os.good())
0
29.08.2013, 20:07

Не по теме:

Цитата Сообщение от ForEveR Посмотреть сообщение
alsav22, Имеется ввиду, что проверять на открытие необязательно. Можно просто
Это понятно (но логичнее именно на открытие проверить).
Приводится моя цитата и говорится о том, что можно не использовать проверку на конец файла. Если это о моём предложении о проверке открытия файла, то при чём здесь конец файла? В моём коде такого нет. Если речь о проверке при чтении (в коде ТС), то при чём здесь моя цитата? Вот это я не понял...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
29.08.2013, 20:07
Помогаю со студенческими работами здесь

Построчное считывание файла
Всё, я совсем запуталась. Помогите пожалуйста!!! Есть файл, который нужно считать. Но каждая его строка должна быть считана в...

Построчное считывание из файла
Всем привет! Функция, которая считывает из файла значения и помещает их в массив. Проблема в том, что даже из файла не читает :-(...

Построчное считывание из файла
#include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; #include &lt;malloc.h&gt; typedef struct { double x1; double y1; double x2; ...

Построчное считывание файла
поделитесь готовой функцией или способом, с помощью которого можно считать с текстового файла ПОСТРОЧНО данные разных типов. например,...

Построчное считывание матрицы из файла
Написал код ifstream fout(&quot;1.txt&quot;); if (fout.is_open()) { int i,j, N=0; fout&gt;&gt;N; //Считываю значение N ...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru