Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Сортировка слов в список из Txt

1.9K
29 мая 2004 года
xiOn
78 / / 16.03.2004
Есть листы и очень не малые содержащие простой текст...
Например:
Цитата:
Это строка котрую
мне нужно разбить по словам в
стобик!


Так вот мне нужен наиоптимальнейший быстрый и правельный алгоритм для чтого чтобы эту слова можно было бы выстраить в столбик, вот так:

Цитата:
Это
строка
котрую
мне
нужно
разбить
по
словам
в
стобик!


Я помудился и написал кое как и очень криво да и ещё получилось очень медленно и с ошибками..
пожалуйста, помогите..

1.9K
29 мая 2004 года
xiOn
78 / / 16.03.2004
Цитата:
Originally posted by xiOn
Есть листы и очень не малые содержащие простой текст...
Например:

Так вот мне нужен наиоптимальнейший быстрый и правельный алгоритм для чтого чтобы эту слова можно было бы выстраить в столбик, вот так:

Я помудился и написал кое как и очень криво да и ещё получилось очень медленно и с ошибками..
и я вообще имею ввиду не только слова, а просто стоящие вместе символы типа Df335g!t r45
и разделённые пробелами или переходом на новую строку..
пожалуйста, помогите..

2.9K
30 мая 2004 года
Antisly
58 / / 22.04.2004
Если я правильно понял, тебе нужно следующее:

ifstream in ("in.txt");
ofstream out ("out.txt");
char str[255];

while ( in >> str )
out << str << endl;
1.9K
30 мая 2004 года
xiOn
78 / / 16.03.2004
О чёрт!..
как тебе это легко удалось!
а я то брал по отдельности вносил символы в str пока не встречался пробел или переход на новую строку потом скидывал содержимое str
очищал его и начинал снова наполнять по одному символу до пробела..
хмм..
РЕСПЕКТ ТЕБЕ! спасиба..
3
30 мая 2004 года
Green
4.8K / / 20.01.2000
Цитата:
Originally posted by Antisly
Если я правильно понял, тебе нужно следующее:

ifstream in ("in.txt");
ofstream out ("out.txt");
char str[255];

while ( in >> str )
out << str << endl;



А тебе не кажется, что этот код потенциально опасен?

1.9K
30 мая 2004 года
xiOn
78 / / 16.03.2004
возникла проблема...

ifstream in("C:\\in.txt");
for(int i = 1; i <= 999; i++)
{
fin.seekg(0, ios::beg); // смещение от начала файла на 0 символов
if(in.eof()) Caption = "EOF!"; /* сообщение о том что конец файла! почему
почему появляется это сообщение? если же было произведено смещение в самое его начало!?
получается что нет.. и следующий цикл while уже безполезен и не исполняется..
while(in >> str)/* некий код */;
}

хмм.. это же можно было записать и так:

for(int i = 1; i <= 999; i++)
{
ifstream in("C:\\in.txt");
if(in.eof()) Caption = "EOF!";/* этого сообщения уже не будет так как мы с каждым циклом
связываем поток с файлом, а по окончанию поток снимается. это так медленно! */
while(in >> str)/* некий код */;
}

Но дело в том что хоть второй вариант и верный, но он очень медленный!
если циклы большие...
как мне можно было бы правильно реализовать первый вариант там где
связка с файлом происходит один раз за циклом а не каждый раз в нём...
может я не верно произвожу смещение в начало??
310
30 мая 2004 года
fellow
853 / / 17.03.2003
Цитата:
Originally posted by Green


А тебе не кажется, что этот код потенциально опасен?



Да ещё как!!!

310
30 мая 2004 года
fellow
853 / / 17.03.2003
Цитата:
Originally posted by xiOn
возникла проблема...
........................
может я не верно произвожу смещение в начало??



Конечно, неверно. Смотрите в справке, там есть пример в описании basic_istream: seekg(0,ios_base::beg);
Именно ios_base::beg, а не ios::beg.

Да и незачем использовать эту форму seekg, когда есть абсолюное позиционирование на начало - seekg(0).

2.9K
30 мая 2004 года
Antisly
58 / / 22.04.2004
Цитата:
Originally posted by fellow
Да ещё как!!!


Если вы имеете в виду char str[255];, то вы правы. Можно использовать string str;

1.9K
30 мая 2004 года
xiOn
78 / / 16.03.2004
хмм.. а почему char str[255] опасен?
И всё равно позицирование seekg(0) непомогает и значение EOF остаётся!
310
31 мая 2004 года
fellow
853 / / 17.03.2003
Цитата:
Originally posted by xiOn
хмм.. а почему char str[255] опасен?
И всё равно позицирование seekg(0) непомогает и значение EOF остаётся!



Почему опасен? Потому что считанная строка может оказаться гораздо больше, чем зарезервированная длина 255 символов.

Насчёт позиционирования. Если в программе именно так, как написано у Вас в посте:

 
Код:
ifstream in("C:\\in.txt");
for(int i = 1; i <= 999; i++)
{
fin.seekg(0, ios::beg); // смещение от начала файла на 0 символов

то получается, что открываете один файловый поток (in), а позиционируете другой (fin).
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог