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

Считывание из файла в массив строк - C++

Восстановить пароль Регистрация
 
Wladius
12 / 7 / 2
Регистрация: 06.01.2013
Сообщений: 127
10.05.2013, 16:55     Считывание из файла в массив строк #1
Например в файле:

jfgjfjgfjkjdf32vsdf1
342rdfrg
3524t6yrfdh3
er2etg

И тд
Надо чтобы создался массив char из четырех строк, и соответственное в str[0] записалась первая строка, в str[1] вторая и тд
И как правильно выделить память под них?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.05.2013, 16:55     Считывание из файла в массив строк
Посмотрите здесь:

считывание строк из файла C++
C++ Считывание строк из файла
Считывание строк из файла C++
C++ Считывание строк из файла
Поочередной считывание строк из текстового файла C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Olivеr
 Аватар для Olivеr
411 / 407 / 13
Регистрация: 06.10.2011
Сообщений: 830
10.05.2013, 18:24     Считывание из файла в массив строк #2
А вектор не подойдёт?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
#include <iterator>
#include <fstream>
 
using namespace std;
 
typedef istream_iterator<string> str_in;
typedef ostream_iterator<string> str_out;
 
int main()
{
    ifstream text("text.txt");
 
    vector<string> vec( str_in(text), ( str_in() ) ); //считывание
 
    copy( vec.begin(), vec.end(), str_out(cout, "\n") ); //вывод
 
    return 0;
}
Wladius
12 / 7 / 2
Регистрация: 06.01.2013
Сообщений: 127
11.05.2013, 01:00  [ТС]     Считывание из файла в массив строк #3
Нет, к сожалению вектор не подойдет
Я вот думаю, например надо будет подсчитать кол-во элементов во всех строках и выделить столько памяти под весь массив, потом при помощи реаллок выделять память при считывании для каждой строки? Или как еще?

Добавлено через 15 минут
Собственно у меня в том и проблема, что мне не понятно как выделять память под все это, потому что по сути считать все это не проблема, а вот как правильно выделять память для подобных конструкций из N строк с произвольным кол-ом символов мне не понятно

Добавлено через 5 часов 56 минут
Вот например на самом примитивном примере объясните что не так и как надо

C++
1
2
3
4
5
6
7
8
9
char **txt=(char**)malloc(200);
 
  while(f.eof()){
      txt[k]=(char*)malloc(200);
  while(txt[k][i-1]!='\n')
  {
  f.get(txt[k][i]); i++;
  } k++; i=0;
  }
Большой_Стен
13 / 13 / 1
Регистрация: 22.04.2012
Сообщений: 99
11.05.2013, 03:21     Считывание из файла в массив строк #4
Действительно, если использоваться хотя бы vector, то всё гораздо приятнее. Но в вашем случае можно и сходить с ума с realloc. А вообще даже в олимпиадах по программированию в формат исходного файла обязательно входит количество строк и чуть ли не их максимальная длина (максимальная Вас должна устроить). Поэтому в начале Вашего примера следует поставить число 4, ну и через пробел ещё можно что-нибудь для максимальной длины строки. Это гораздо разумнее чем realloc по миллиону раз вызывать.
Yandex
Объявления
11.05.2013, 03:21     Считывание из файла в массив строк
Ответ Создать тему
Опции темы

Текущее время: 22:44. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru