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

Создать список из слов файла - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.90
Vlad_1024
0 / 0 / 0
Регистрация: 03.04.2013
Сообщений: 19
15.04.2013, 23:02     Создать список из слов файла #1
Подскажите пожалуйста как написать программу, которая считывает текст по словам из файла и создаёт из него список.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
xtorne21st
интересующийся
300 / 271 / 19
Регистрация: 25.09.2010
Сообщений: 1,056
15.04.2013, 23:17     Создать список из слов файла #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Открывает файл, создаёт список, и выводит результат:
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
#include <iostream>
#include <fstream>
#include <list>
#include <iterator>
#include <algorithm>
#include <string>
#include <cstdlib>
 
typedef std::istream_iterator<std::string> ii;
typedef std::ostream_iterator<std::string> oi;
 
int main()
{
    std::string file_name;
    std::cout << "Input: ";
    std::cin >> file_name;
    std::ifstream in(file_name.c_str(), std::ios::in);
    if (!in)
    {
        std::cerr << "error: couldn't open file.\n";
        exit(1);
    }
    std::list<std::string> words_list((ii(in)), ii());
    std::copy(words_list.begin(), words_list.end(), oi(std::cout, "\n"));
 
    in.close();
}
yoghurt92
373 / 344 / 22
Регистрация: 17.05.2012
Сообщений: 1,049
15.04.2013, 23:27     Создать список из слов файла #3
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Vlad_1024, или так

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
#include <iostream>
#include <algorithm>
#include <iterator>
#include <list>
#include <fstream>
#include <string>
using namespace std;
 
template <typename T>
void addToList(list<T> &_coll, T _word){
    _coll.push_front(_word);
}
 
template <typename T>
void showList(list<T> &_coll){
    copy(_coll.begin(), _coll.end(), ostream_iterator<T>(cout, "\n"));
}
 
int _tmain(int argc, _TCHAR* argv[])
{
    string word;
    list<string> coll;
    ifstream fin("input.txt", ios::in);
 
    while(!fin.eof()){
        fin >> word;
        addToList(coll, word);
    }
 
    cout << "List:\n";
    showList(coll);
 
    cout << "\n\n";
    return 0;
}
Vlad_1024
0 / 0 / 0
Регистрация: 03.04.2013
Сообщений: 19
16.04.2013, 01:02  [ТС]     Создать список из слов файла #4
xtorne21st
Спасибо большое!!!!!!!!!!!!!!!!!!!!!!!!!

Добавлено через 34 минуты
yoghurt92
видает ошибку в строке 19 что сделать

Добавлено через 1 минуту
и пацаны можно както проще это все как для 1-го курса ))?

Добавлено через 35 минут
yoghurt92, видает ошибку в строке 19 что сделать?
xtorne21st
интересующийся
300 / 271 / 19
Регистрация: 25.09.2010
Сообщений: 1,056
16.04.2013, 01:05     Создать список из слов файла #5
замените строку на просто int main()
Vlad_1024
0 / 0 / 0
Регистрация: 03.04.2013
Сообщений: 19
16.04.2013, 08:40  [ТС]     Создать список из слов файла #6
xtorne21st, всеромно не пашет (((
yoghurt92
373 / 344 / 22
Регистрация: 17.05.2012
Сообщений: 1,049
16.04.2013, 08:53     Создать список из слов файла #7
Vlad_1024, вот так можно в ручную

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
41
42
43
44
45
46
47
48
49
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
 
struct ListNode{
    string data;
    ListNode *next;
};
 
template <typename T>
ListNode *addToFront(ListNode *Head, const T value)                 
{
    ListNode *Ptr = new ListNode;
    Ptr -> data = value;
 
    Ptr -> next = Head;
    Head = Ptr;
 
    return Head;
}
 
void showList(ListNode *Head)                 
{
    ListNode *tmp = Head;
 
    while(tmp != NULL){
        cout << tmp -> data << endl;
        tmp = tmp -> next;
    }
}
 
int main()
{
    string word;
    ListNode *Head(NULL);
    ifstream fin("input.txt", ios::in);
 
    while(!fin.eof()){
        fin >> word;
        Head = addToFront(Head, word);
    }
 
    cout << "List:\n";
    showList(Head);
 
    cout << "\n\n";
    return 0;
}
Vlad_1024
0 / 0 / 0
Регистрация: 03.04.2013
Сообщений: 19
16.04.2013, 14:56  [ТС]     Создать список из слов файла #8
yoghurt92, Спс все работает просто на ура ))) спасибо большое ))
yoghurt92
373 / 344 / 22
Регистрация: 17.05.2012
Сообщений: 1,049
16.04.2013, 15:02     Создать список из слов файла #9
Vlad_1024, я забыл, допишите в конец программы

C++
1
fin.close();
BumerangSP
 Аватар для BumerangSP
4283 / 1405 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
16.04.2013, 19:39     Создать список из слов файла #10
Ага, попробуйте записать в файл что-то вроде:
Код
 .  .,1.!./,  ,sd;sdlpa. .df af.adf;w ef9e f    
4 EE5.G
5T .5Y W45Y56.YW4.Y 
4.Y. .S4
6Y WT.GR G. EF.34T.34TE RG ..Y 45G
ETRT
И вряд ли он хоть одно слово (последовательность букв и/или цифр) запишет.

Добавлено через 6 минут
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
#include <iostream>
#include <fstream>
#include <string>
int main()
{
    std::string str;
    std::ifstream in("1.txt");
    while(!in.eof())
    {
        const char* tokens = ". ;,!?/";
        std::getline(in, str);
        str.erase(0, str.find_first_not_of(tokens));
        size_t beginPos = str.find_first_of(tokens);
        size_t nextPos = str.find_first_of(tokens, beginPos + 1);
        if (beginPos != std::string::npos && beginPos > 0)
            std::cout << str.substr(0, beginPos) << '\n';
        else
            std::cout << str << '\n';
        while(beginPos != std::string::npos)
        {
            if (nextPos == std::string::npos)
            {
                size_t poss = str.find_last_of(tokens);
                if(poss != std::string::npos && poss + 1 != str.size())
                std::cout << str.substr(beginPos + 1, str.size() - beginPos) << '\n';
                break;
            }
            std::string substrWord = str.substr(beginPos + 1, nextPos - beginPos - 1);
            if (substrWord.size())
                std::cout << substrWord << '\n';
            beginPos = str.find_first_of(tokens, nextPos);
            nextPos = str.find_first_of(tokens, beginPos + 1);
        }
    }
    system("pause");
    return 0;
}
Так должен считывать.
yoghurt92
373 / 344 / 22
Регистрация: 17.05.2012
Сообщений: 1,049
16.04.2013, 19:49     Создать список из слов файла #11
BumerangSP, вывело, но не в правильном порядке, а с чем это связано?
BumerangSP
 Аватар для BumerangSP
4283 / 1405 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
16.04.2013, 19:55     Создать список из слов файла #12
Вот мой вывод:
Создать список из слов файла
А в каком таком "неправильном"?)
yoghurt92
373 / 344 / 22
Регистрация: 17.05.2012
Сообщений: 1,049
16.04.2013, 20:00     Создать список из слов файла #13
BumerangSP, ну у меня вывелось содержимое, правда порядок следование символов был изменен... с чем связано такое поведение?
BumerangSP
 Аватар для BumerangSP
4283 / 1405 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
16.04.2013, 20:18     Создать список из слов файла #14
yoghurt92, понятно, что он изменен. Можно сюда скрин вывода?
yoghurt92
373 / 344 / 22
Регистрация: 17.05.2012
Сообщений: 1,049
16.04.2013, 20:23     Создать список из слов файла #15
BumerangSP,
Миниатюры
Создать список из слов файла  
BumerangSP
 Аватар для BumerangSP
4283 / 1405 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
16.04.2013, 20:26     Создать список из слов файла #16
yoghurt92, а отладчик чего показывает? И среда - не билдер, случайно?
yoghurt92
373 / 344 / 22
Регистрация: 17.05.2012
Сообщений: 1,049
16.04.2013, 20:29     Создать список из слов файла #17
BumerangSP, студия восьмая, все нормально показывает, даже без варнингов...
BumerangSP
 Аватар для BumerangSP
4283 / 1405 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
16.04.2013, 20:45     Создать список из слов файла #18
yoghurt92, в студийных настройках не силен. У себя проверил еще на VC++ 2008 - работает.

Добавлено через 1 минуту
насчет отладчика имелось в виду, как работают методы string: правильно ли индексы находят и т.д.
yoghurt92
373 / 344 / 22
Регистрация: 17.05.2012
Сообщений: 1,049
16.04.2013, 20:45     Создать список из слов файла #19
BumerangSP, ну ладно, и на этом спасибо
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.04.2013, 00:58     Создать список из слов файла
Еще ссылки по теме:

C++ Необходимо создать связной список с записью в файл и восстановлением из файла
Как записать список из строки слов C++
C++ Составить линейный односвязный список неповторяющихся слов из файла

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

Или воспользуйтесь поиском по форуму:
xtorne21st
интересующийся
300 / 271 / 19
Регистрация: 25.09.2010
Сообщений: 1,056
17.04.2013, 00:58     Создать список из слов файла #20
Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Input: text.txt
.
.,1.!./,
,sd;sdlpa.
.df
af.adf;w
ef9e
f
4
EE5.G
5T
.5Y
W45Y56.YW4.Y
4.Y.
.S4
6Y
WT.GR
G.
EF.34T.34TE
RG
..Y
45G
ETRT
Добавлено через 23 секунды
А в чём проблема то?)

Добавлено через 39 минут
BumerangSP, Всё отлично читает, во всяком случаи на linux
Yandex
Объявления
17.04.2013, 00:58     Создать список из слов файла
Ответ Создать тему
Опции темы

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