Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 14, средняя оценка - 4.79
Pain'ka
1 / 1 / 0
Регистрация: 23.11.2011
Сообщений: 54
#1

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

31.10.2013, 13:51. Просмотров 2629. Ответов 17
Метки нет (Все метки)

Всем добра!
Пишу с таким вопросом: есть файл с текстом, длины строк не известны, надо задать динамический массив string (ну чтобы можно было добавлять символы) и записать в этот массив.

так вот, не могу найти как задать этот динамический массив, и как в него считать.
помогите! хоть ссылки!
на getline ругается(
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.10.2013, 13:51
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Чтение из файла в массив строк (C++):

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

Чтение из файла (массив строк) - C++
Здравствуйте, не могли бы вы мне помочь, есть данная задача Реализовать структуру «Ticket» – билет на самолет, содержащую информацию о...

Чтение из файла и запись строк в массив - C++
Здравствуйте! Сейчас пишу свою реализацию алгоритма FIFS и возникла проблема с записью данных из файла в массив. Формат входных данных в...

Чтение строк из файла - C++
Есть файл с 10 строками, необходимо вывести на экран четные строки ifstream file("C:\\1.txt"); for (int i = 0; i < 5; i++) { ...

Чтение строк из файла - C++
struct Questions { char quest; }QuestList; void main() { int numQuest=0; FILE *fp; fp = fopen("voprosy.txt",...

Чтение строк из файла - C++
Добрый день имеется ряд вопросов касательно чтения строк из текстового файла. В папке с программой содержится файл TEST.TXT, в котором...

17
egor2116
451 / 375 / 42
Регистрация: 20.01.2013
Сообщений: 1,135
31.10.2013, 15:43 #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 <fstream>
#include <string>
 
int main()
{
    
std::string * text = new std::string[256];
char * buff = new char[256];
std::ifstream iss("main.cpp");
int i=0;
while(!iss.eof())
{
iss.getline(buff,256);
text[i]=std::string(buff);
std::cout<<text[i]<<std::endl;
++i;
}
 
system("PAUSE");
return 0;
}
1
ForEveR
В астрале
Эксперт С++
7994 / 4753 / 321
Регистрация: 24.06.2010
Сообщений: 10,547
Завершенные тесты: 3
31.10.2013, 16:02 #3
egor2116, Ну нда... Используем string, но не используем vector. Почему интересно?

C++
1
2
3
4
5
6
7
8
9
10
11
12
std::ifstream ifs("file");
if (!ifs)
{
   std::cerr << "Not opened" << std::endl;
   return 1;
}
std::string v;
std::vector<std::string> lines;
while (std::getline(ifs, v))
{
   lines.push_back(v);
}
0
egor2116
451 / 375 / 42
Регистрация: 20.01.2013
Сообщений: 1,135
31.10.2013, 16:36 #4
egor2116, Ну нда... Используем string, но не используем vector. Почему интересно?
Вы задание читали ?
надо задать динамический массив string
Добавлено через 5 минут
Но можно и так и как хотите.
0
oxotnik
1601 / 1078 / 36
Регистрация: 21.08.2008
Сообщений: 4,541
Записей в блоге: 1
31.10.2013, 16:39 #5
egor2116, а чем вектор не динамический массив?
0
egor2116
451 / 375 / 42
Регистрация: 20.01.2013
Сообщений: 1,135
31.10.2013, 16:46 #6
Ну начинается. Я не говорил что не массив. Я сделал так как захотел.Товарищ ForEveR, сделал чуть по другому флаг в руки я не против.

а на вопрос
Используем string, но не используем vector. Почему интересно?
Вас устроит ответ : мне так захотелось и не вижу в этом ничего плохого, дабы не разводить тут очередное, ненужное обсуждение.

Добавлено через 58 секунд
Надеюсь человеку помог как смог и он будет за это благодарен. этого достаточно(мне).
0
alsav22
5437 / 4832 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
31.10.2013, 16:59 #7
egor2116, зачем в вашем коде buff? Ведь можно сразу в массив string читать.

Добавлено через 3 минуты
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
#include <fstream>
#include <string>
 
int main()
{
    
std::string * text = new std::string[256];
std::ifstream iss("main.cpp");
int i=0;
while(getline(iss, text[i]))
{
    std::cout<<text[i]<<std::endl;
    ++i;
}
 
system("PAUSE");
return 0;
}
Главный недостаток кода: количество строк в файле неизвестно. Если их будет больше, чем 256?
0
egor2116
451 / 375 / 42
Регистрация: 20.01.2013
Сообщений: 1,135
31.10.2013, 17:05 #8
зачем в вашем коде buff?
За шкафом.(видимых причин нет, написал как написал). Молча приведите свой пример и все.
0
alsav22
31.10.2013, 17:07
  #9

Не по теме:

Цитата Сообщение от egor2116 Посмотреть сообщение
Молча приведите свой пример и все.
Вы решили покомандовать? Или похамить?

0
egor2116
451 / 375 / 42
Регистрация: 20.01.2013
Сообщений: 1,135
31.10.2013, 17:13 #10

Не по теме:

мне не понятны причины комментариев подобных вашему. Нельзя ли просто привести свой пример без комментариев чужого, а комментировать если бы он работал не правильно.



Добавлено через 1 минуту

Не по теме:

Я не эксперт и не супер специалист. И не хотел вас чем то обидеть

0
alsav22
5437 / 4832 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
31.10.2013, 17:37 #11

Не по теме:

Цитата Сообщение от egor2116 Посмотреть сообщение
И не хотел вас чем то обидеть
Хорошо. Извинения принимаются.


Теперь по сути.
Цитата Сообщение от egor2116 Посмотреть сообщение
Нельзя ли просто привести свой пример без комментариев чужого
Можно, но тут принято обсуждать выложенные коды. В этом нет ничего обидного. Обычно, спасибо говорят за замечания, даже эксперты.
Цитата Сообщение от egor2116 Посмотреть сообщение
а комментировать если бы он работал не правильно.
Он и работает неправильно:
Цитата Сообщение от alsav22 Посмотреть сообщение
Главный недостаток кода: количество строк в файле неизвестно. Если их будет больше, чем 256?
1
lss
926 / 855 / 282
Регистрация: 10.10.2012
Сообщений: 2,705
01.11.2013, 19:40 #12
Цитата Сообщение от egor2116 Посмотреть сообщение
За шкафом.(видимых причин нет, написал как написал).
Когда пишешь, голову отключаешь?
0
Pain'ka
1 / 1 / 0
Регистрация: 23.11.2011
Сообщений: 54
02.11.2013, 19:31  [ТС] #13
Спасибо всем за помощь, но есть еще вопрос:если задавать
C++
1
std::string * text = new std::string[256];
то потом, когда буду работать с этим массивом не будет проблем при считывании?например, если в первой строчке только 50 символов?
0
lss
926 / 855 / 282
Регистрация: 10.10.2012
Сообщений: 2,705
02.11.2013, 22:22 #14
Цитата Сообщение от Pain'ka Посмотреть сообщение
Спасибо всем за помощь, но есть еще вопрос:если задавать
C++
1
std::string * text = new std::string[256];
то потом, когда буду работать с этим массивом не будет проблем при считывании?например, если в первой строчке только 50 символов?
Буду проблемы, если в файле строк больше, чем 256. Нужно или считать сколько строк в файле и потом создавать массив, или использовать объекты с автоматическим упавлением памятью (vector).
0
ValeryS
Модератор
7019 / 5357 / 529
Регистрация: 14.02.2011
Сообщений: 18,072
02.11.2013, 23:09 #15
Цитата Сообщение от Pain'ka Посмотреть сообщение
надо задать динамический массив string (ну чтобы можно было добавлять символы) и записать в этот массив.
это только vector, если говорим о классическом С++
а
Цитата Сообщение от alsav22 Посмотреть сообщение
std::string * text = new std::string[256];
это не динамический массив, это динамическое выделение памяти, а массив статический
главное различие динамический массив может менять свой размер , статический нет, не зависимо как под него память выделена

Добавлено через 2 минуты
Цитата Сообщение от Pain'ka Посмотреть сообщение
например, если в первой строчке только 50 символов?
string регулирует свой размер
и здесь
Цитата Сообщение от Pain'ka Посмотреть сообщение
std::string * text = new std::string[256];
не выделяется 256 ячеек под строку, здесь создается 256 строк. у каждой может быть свой размер
0
02.11.2013, 23:09
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.11.2013, 23:09
Привет! Вот еще темы с ответами:

Чтение строк из файла - C++
Мне нужно читать строки из фалйа разной длинны тоесть может быть вобще пустая строка. нужно именно c++ не c

Чтение строк из бинарного файла. - C++
Вот как происходит запись строк pr.login и pr.password: FILE *f; f=fopen(path,&quot;ab&quot;); if (f!=NULL) { cout&lt;&lt;&quot;Файл концигурации...

Чтение из файла определеных строк - C++
Здравствуйте. Как реализовать чтение из файла (например: каждой 3 и каждой 7 строки )

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


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

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