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

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

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 14, средняя оценка - 4.79
Pain'ka
 Аватар для Pain'ka
1 / 1 / 0
Регистрация: 23.11.2011
Сообщений: 54
31.10.2013, 13:51     Чтение из файла в массив строк #1
Всем добра!
Пишу с таким вопросом: есть файл с текстом, длины строк не известны, надо задать динамический массив string (ну чтобы можно было добавлять символы) и записать в этот массив.

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

Чтение файла в массив строк C++
чтение строк из файла C++
Чтение строк из файла C++
C++ Чтение строк из бинарного файла.
чтение из файла (массив строк) C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
egor2116
 Аватар для egor2116
337 / 368 / 42
Регистрация: 20.01.2013
Сообщений: 1,100
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;
}
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 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);
}
egor2116
 Аватар для egor2116
337 / 368 / 42
Регистрация: 20.01.2013
Сообщений: 1,100
31.10.2013, 16:36     Чтение из файла в массив строк #4
egor2116, Ну нда... Используем string, но не используем vector. Почему интересно?
Вы задание читали ?
надо задать динамический массив string
Добавлено через 5 минут
Но можно и так и как хотите.
oxotnik
 Аватар для oxotnik
1584 / 1061 / 33
Регистрация: 21.08.2008
Сообщений: 4,545
Записей в блоге: 1
31.10.2013, 16:39     Чтение из файла в массив строк #5
egor2116, а чем вектор не динамический массив?
egor2116
 Аватар для egor2116
337 / 368 / 42
Регистрация: 20.01.2013
Сообщений: 1,100
31.10.2013, 16:46     Чтение из файла в массив строк #6
Ну начинается. Я не говорил что не массив. Я сделал так как захотел.Товарищ ForEveR, сделал чуть по другому флаг в руки я не против.

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

Добавлено через 58 секунд
Надеюсь человеку помог как смог и он будет за это благодарен. этого достаточно(мне).
alsav22
5282 / 4801 / 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?
egor2116
 Аватар для egor2116
337 / 368 / 42
Регистрация: 20.01.2013
Сообщений: 1,100
31.10.2013, 17:05     Чтение из файла в массив строк #8
зачем в вашем коде buff?
За шкафом.(видимых причин нет, написал как написал). Молча приведите свой пример и все.
alsav22
31.10.2013, 17:07
  #9

Не по теме:

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

egor2116
 Аватар для egor2116
337 / 368 / 42
Регистрация: 20.01.2013
Сообщений: 1,100
31.10.2013, 17:13     Чтение из файла в массив строк #10

Не по теме:

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



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

Не по теме:

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

alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
31.10.2013, 17:37     Чтение из файла в массив строк #11

Не по теме:

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


Теперь по сути.
Цитата Сообщение от egor2116 Посмотреть сообщение
Нельзя ли просто привести свой пример без комментариев чужого
Можно, но тут принято обсуждать выложенные коды. В этом нет ничего обидного. Обычно, спасибо говорят за замечания, даже эксперты.
Цитата Сообщение от egor2116 Посмотреть сообщение
а комментировать если бы он работал не правильно.
Он и работает неправильно:
Цитата Сообщение от alsav22 Посмотреть сообщение
Главный недостаток кода: количество строк в файле неизвестно. Если их будет больше, чем 256?
lss
919 / 849 / 281
Регистрация: 10.10.2012
Сообщений: 2,701
01.11.2013, 19:40     Чтение из файла в массив строк #12
Цитата Сообщение от egor2116 Посмотреть сообщение
За шкафом.(видимых причин нет, написал как написал).
Когда пишешь, голову отключаешь?
Pain'ka
 Аватар для 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 символов?
lss
919 / 849 / 281
Регистрация: 10.10.2012
Сообщений: 2,701
02.11.2013, 22:22     Чтение из файла в массив строк #14
Цитата Сообщение от Pain'ka Посмотреть сообщение
Спасибо всем за помощь, но есть еще вопрос:если задавать
C++
1
std::string * text = new std::string[256];
то потом, когда буду работать с этим массивом не будет проблем при считывании?например, если в первой строчке только 50 символов?
Буду проблемы, если в файле строк больше, чем 256. Нужно или считать сколько строк в файле и потом создавать массив, или использовать объекты с автоматическим упавлением памятью (vector).
ValeryS
Модератор
6374 / 4840 / 441
Регистрация: 14.02.2011
Сообщений: 16,040
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 строк. у каждой может быть свой размер
Pain'ka
 Аватар для Pain'ka
1 / 1 / 0
Регистрация: 23.11.2011
Сообщений: 54
03.11.2013, 17:35  [ТС]     Чтение из файла в массив строк #16
Ах, простите! не то
вот тут
C++
1
char * buff = new char[256];
размер всегда будет 256 символов?
я точно знаю, сколько у меня строчек, но не знаю сколько в них символов(их может быть разное количество, от 10 до 100, и в каждой строчке по-разному), мне их потом надо менять, что-то удалять, что-то дописывать. мне и надо, чтоб этот массив строк оказался, как бы резиновым.

Добавлено через 1 час 18 минут
и еще вопрос: если использовать vector, то он сильно отличается от стринга?
просто у меня у меня в проге уже многое написано, и менять как-то не оч охота)
ValeryS
Модератор
6374 / 4840 / 441
Регистрация: 14.02.2011
Сообщений: 16,040
03.11.2013, 17:39     Чтение из файла в массив строк #17
Цитата Сообщение от Pain'ka Посмотреть сообщение
и еще вопрос: если использовать vector, то он сильно отличается от стринга?
че то я не понял
string для хранения строк
vector для хранения массива string
какая разница чем они отличаются? они для разных задач
ForEveR, тебе все задание расписал
бери справочник и смотри зачем каждая строка
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.11.2013, 22:25     Чтение из файла в массив строк
Еще ссылки по теме:

C++ Сравнение строк в структуре, чтение из файла
Чтение строк из файла C++
Чтение строк из файла C++

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

Или воспользуйтесь поиском по форуму:
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
04.11.2013, 22:25     Чтение из файла в массив строк #18
Цитата Сообщение от Pain'ka Посмотреть сообщение
Добавлено через 1 час 18 минут
и еще вопрос: если использовать vector, то он сильно отличается от стринга?
просто у меня у меня в проге уже многое написано, и менять как-то не оч охота)
Используйте для строчек string. Vector предназначен для хранения самыx разных типов данных, string - для храненеия символов.
Yandex
Объявления
04.11.2013, 22:25     Чтение из файла в массив строк
Ответ Создать тему
Опции темы

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