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

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

Войти
Регистрация
Восстановить пароль
 
LeoFox
0 / 0 / 0
Регистрация: 11.05.2012
Сообщений: 10
#1

STL list<> помогите есть затруднение Совсем не пойму в чем дело!!! - C++

11.05.2012, 22:41. Просмотров 763. Ответов 12
Метки нет (Все метки)

В общем дан файл словаря из которого нужно все слова перевести в список list запись вроде корректная и все ок))но на выходе в другом файле печатается много раз 1 и то же последнее слово.
В файле словаря в 1 строке 1 слово.


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
#include <list>  
#include <conio.h>
#include <iostream.h>
#include <iterator>
using namespace std;
 
 int main()
 {
   list<char*> word;
   char str[12];
   int x=0;
   FILE *f,*g;
   f=fopen("words.txt","rt");
   g=fopen("woe.txt","wt");
      while(!feof(f))
     { 
             fgets(str,12,f);             
       word.push_back(str);
         }
    for(list<char*>::iterator i=word.begin();i!=word.end();++i)
         fputs(*i,g); 
         
         fclose(f);
         fclose(g);
   
  getch();
 return 0;    
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.05.2012, 22:41     STL list<> помогите есть затруднение Совсем не пойму в чем дело!!!
Посмотрите здесь:
C++ не пойму в чем дело
C++ Помогите найти ошибки в сортировке List STL
C++ помогите не пойму в чем проблема компилятор не выдает ошибку,но не вычисляет произведение
С + + и Visual C + + и чем они отличаются? Есть ли их изучение взаимно дополняющее или это совсем разные языки? C++
C++ STL stack, не пойму где ошибка
C++ STL List
C++ STL list
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
DU
1482 / 1058 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
11.05.2012, 22:50     STL list<> помогите есть затруднение Совсем не пойму в чем дело!!! #2
так работает потому что в списке у вас хранятся указатели на один и тот же массив. все элементы списка указывают на str. при печате печатается то, что в этом массиве str. а в нем как раз последнее слово. чтобы работало, в список нужно склыдвать строки, а не указатели на массив символом. нужно вместо std::list<char*> использовать std::list<std::string>. тогда все должно заработать как надо.
LeoFox
0 / 0 / 0
Регистрация: 11.05.2012
Сообщений: 10
12.05.2012, 13:18  [ТС]     STL list<> помогите есть затруднение Совсем не пойму в чем дело!!! #3
пробовал так но теперь и вовсе не выводит даже на экран
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
#include <list>  
#include <conio.h>
#include <iostream.h>
#include <fstream.h>
#include <sstream>
#include <iterator>
using namespace std;
 
 int main()
 {
   string str;
   list<string> word;
 
   ifstream f("words.txt");
   ofstream g("woe.txt");
      while(f.eof())
     { 
             getline(f,str);             
       word.push_back(str);
         }
    for(list<string>::iterator i=word.begin();i!=word.end();++i)
         cout<<*i<<endl; 
  
  getch();
 return 0;    
}
Jupiter
Каратель
Эксперт С++
6553 / 3973 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
12.05.2012, 13:21     STL list<> помогите есть затруднение Совсем не пойму в чем дело!!! #4
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <list>
#include <string>
#include <fstream>
#include <iostream>
 
int main()
{
    std::string str;
    std::list<std::string> word;
 
    std::ifstream f("words.txt");
    std::ofstream g("woe.txt");
    while (f >> str)
        word.push_back(str);
 
    for(std::list<std::string>::iterator i = word.begin(); i != word.end(); ++i)
        std::cout << *i << '\n'; 
 
    std::cin.get();
    return 0;
}
LeoFox
0 / 0 / 0
Регистрация: 11.05.2012
Сообщений: 10
12.05.2012, 13:24  [ТС]     STL list<> помогите есть затруднение Совсем не пойму в чем дело!!! #5
А есть ли способ считать строку? потому что надо еще сделать проверку если есть в строке еще слово то это не словарь...потому что как знаю f>> считывает до пробела
Jupiter
Каратель
Эксперт С++
6553 / 3973 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
12.05.2012, 13:25     STL list<> помогите есть затруднение Совсем не пойму в чем дело!!! #6
Цитата Сообщение от LeoFox Посмотреть сообщение
А есть ли способ считать строку?
C++
1
2
while (std::getline(f, str))
    word.push_back(str);
LeoFox
0 / 0 / 0
Регистрация: 11.05.2012
Сообщений: 10
12.05.2012, 13:29  [ТС]     STL list<> помогите есть затруднение Совсем не пойму в чем дело!!! #7
ЭЭЭ))спасибо огромное)))Еще вопрос))все дело в std::?? почему?)
Jupiter
Каратель
Эксперт С++
6553 / 3973 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
12.05.2012, 13:32     STL list<> помогите есть затруднение Совсем не пойму в чем дело!!! #8
Цитата Сообщение от LeoFox Посмотреть сообщение
все дело в std::?? почему?)
нет, дело не в std
LeoFox
0 / 0 / 0
Регистрация: 11.05.2012
Сообщений: 10
12.05.2012, 13:35  [ТС]     STL list<> помогите есть затруднение Совсем не пойму в чем дело!!! #9
Ой дурень!))))в f.eof зебыл "!"))хД
Спасибо)
LeoFox
0 / 0 / 0
Регистрация: 11.05.2012
Сообщений: 10
14.05.2012, 22:37  [ТС]     STL list<> помогите есть затруднение Совсем не пойму в чем дело!!! #10
Еще 1 вопрос
в С посимвольное считывание файла типа FILE* getc(); ну или fgetc(); (fgetc(FILE*)) а для считывания из ofstream что использовать? гетч просит тип FILE*
Jupiter
Каратель
Эксперт С++
6553 / 3973 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
14.05.2012, 23:06     STL list<> помогите есть затруднение Совсем не пойму в чем дело!!! #11
Цитата Сообщение от LeoFox Посмотреть сообщение
а для считывания из ofstream что использовать?
C++
1
2
3
4
5
std::fstream file(...);
char c;
file.get(c);
c = file.get();
file >> c;
gray_fox
What a waste!
1447 / 1176 / 61
Регистрация: 21.04.2012
Сообщений: 2,463
Завершенные тесты: 3
14.05.2012, 23:07     STL list<> помогите есть затруднение Совсем не пойму в чем дело!!! #12
Цитата Сообщение от LeoFox Посмотреть сообщение
для считывания из ofstream что использовать?
Из ifstream может? тогда get.
C++
1
2
3
std::ifstream ifs("input.txt");
char ch;
ch = ifs.get();
P.S.: а так уже нельзя?
C++
1
2
3
std::ifstream ifs("input.txt");
char ch;
ifs >> ch;
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.05.2012, 23:12     STL list<> помогите есть затруднение Совсем не пойму в чем дело!!!
Еще ссылки по теме:
STL list C++
List STL C++
C++ STL List Iterator
Программа с List из STL C++
C++ Удаление list STL

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

Или воспользуйтесь поиском по форуму:
LeoFox
0 / 0 / 0
Регистрация: 11.05.2012
Сообщений: 10
14.05.2012, 23:12  [ТС]     STL list<> помогите есть затруднение Совсем не пойму в чем дело!!! #13
Что то я туплю))спать надо)
Yandex
Объявления
14.05.2012, 23:12     STL list<> помогите есть затруднение Совсем не пойму в чем дело!!!
Ответ Создать тему
Опции темы

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