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

Вывод string из list - C++

Восстановить пароль Регистрация
 
Oktaram
0 / 0 / 0
Регистрация: 11.09.2012
Сообщений: 19
16.09.2012, 19:02     Вывод string из list #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
29
30
31
class human
{
public:
string name;
int age;
};
 
int main ()
{
human one, two;
one.name="AnyName"; heal.name="AnyName";
one.age=10; two.age=5;
list<string> names;
list<int> ages;
names.push_back (one.name);
names.push_back (two.name);
costs.push_back (one.ages);
costs.push_back (two.ages);
 
cout << "Names contains: ";
for (list<string>::iterator it=names.begin(); it!=names.end(); ++it)
cout<<" "<<*it);
 
cout<<endl;
 
cout << "Costs contains:";
for (list<int>::iterator it=ages.begin(); it!=ages.end(); ++it)
cout<<" "<<*it);
 
getch();
};
В результате список ages выводится нормально, а names не выводится вообще, хотя при построчном выполнении видно что все нормально записано. Как правильно организовать вывод?
Win7, VS2008.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.09.2012, 19:02     Вывод string из list
Посмотрите здесь:

C++ List, string, файл
C++ Как используя C-String а потом и String class варьировать вывод?
C++ контейнер <list> вывод содержимого
Вывод string C++
Удаление vector, list, string C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
serejkus
46 / 44 / 4
Регистрация: 31.10.2011
Сообщений: 98
16.09.2012, 19:38     Вывод string из list #2
Вообще, этот код компилироваться не должен - много ошибок (типа неизвестного heal в 11 строке, закрывающейся скобки в 22).
Ваш способ вывода строк вполне нормальный, единственное - в обоих случаях в цикле я бы использовал const_iterator вместо iterator.
Oktaram
0 / 0 / 0
Регистрация: 11.09.2012
Сообщений: 19
16.09.2012, 19:55  [ТС]     Вывод string из list #3
Код печатал вручную(не копипастой из VS), поэтому и ошибки, так-то все компилировалось, но не выводилось. Да и сейчас на выводе в names нет ничего.

А вместо

Цитата Сообщение от Oktaram Посмотреть сообщение
heal.name="AnyName";
должно быть two.name, думаю это очевидно.

Цитата Сообщение от serejkus Посмотреть сообщение
я бы использовал const_iterator вместо iterator
А почему?

Добавлено через 8 минут
error C2679: binary '<<' : no operator found which takes a right-hand operand of type 'std::basic_string<_Elem,_Traits,_Ax>' (or there is no acceptable conversion)

Ругается компилятор. Если заменить cin на printf() не ругается, но ничего не делает.
kotleta
 Аватар для kotleta
42 / 42 / 11
Регистрация: 13.09.2012
Сообщений: 196
16.09.2012, 19:55     Вывод string из list #4
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
#include <iostream>
#include <list>
 
using namespace std;
 
class human
{
    public:
        string name;
        int age;
};
 
int main ()
{
 human one, two;
 
 one.name="Denis"; two.name="Valera";
 one.age=14; two.age=-5;
 
 list <string> names;
 list <int> ages;
 
 names.push_back (one.name);
 names.push_back (two.name);
 ages.push_back (one.age);
 ages.push_back (two.age);
 
 cout << "Names contains: ";
 for (list<string>::iterator it=names.begin(); it!=names.end(); ++it)
 cout<<" "<<*it;
 
 cout<<endl;
 
cout << "Costs contains:";
for (list<int>::iterator it=ages.begin(); it!=ages.end(); ++it)
cout<<" "<<*it;
 
int i;
cin >> i;
 
return 0;
};
Теперь работает.
Не знает, может вы тоже программы по ночам пишете)))
У вас все логически правильно написано, но в синтаксите я обнаружил кучу недекларированных переменных..
Oktaram
0 / 0 / 0
Регистрация: 11.09.2012
Сообщений: 19
16.09.2012, 19:57  [ТС]     Вывод string из list #5
Скопировал, запустил, но оно не компилится... >_<
error C2679: binary '<<' : no operator found which takes a right-hand operand of type 'std::basic_string<_Elem,_Traits,_Ax>' (or there is no acceptable conversion)

P.S. По ночам, да)
kotleta
 Аватар для kotleta
42 / 42 / 11
Регистрация: 13.09.2012
Сообщений: 196
16.09.2012, 20:02     Вывод string из list #6
Добавьте #include <string>

Добавлено через 1 минуту
Ваш компилятор пишет no operator found which takes a right-hand operand of type 'std::basic_
Это значит "не найден оператор, который использует правый операнд типа std::basic_string

В вашем классе
name объявлена как тип string

Вам нужно подключить #include <string>
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.09.2012, 20:06     Вывод string из list
Еще ссылки по теме:

C++ Вывод на экран List<Obj>
Как воспользоваться set_intersection для двух list<string> C++
C++ Использование контейнерного класса <list>. Вывод элементов

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

Или воспользуйтесь поиском по форуму:
Oktaram
0 / 0 / 0
Регистрация: 11.09.2012
Сообщений: 19
16.09.2012, 20:06  [ТС]     Вывод string из list #7
А слона-то я и не заметил...
Спасибо.
Yandex
Объявления
16.09.2012, 20:06     Вывод string из list
Ответ Создать тему
Опции темы

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