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

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

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

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

16.09.2012, 19:02. Просмотров 663. Ответов 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
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, и считать с файла обратно в list - C++
Извините подскажите пожалуйста, как записать list(очередь) объектов в которых содержаться string, и считать с файла обратно в list;...

Как используя C-String а потом и String class варьировать вывод? - C++
Дана задача: при вводе полного И.О.Ф. (в таком порядке) выводить Ф, И и О(только первую букву и .). И если О не задано - выводить только...

List, string, файл - C++
Всем привет! Есть текстовый 8 math +43.5hjti 34 ). Как сделать так чтобы программа вывела содержимое файла (не хочет выводить...

Удаление vector, list, string - C++
Привет! Такая задача. В программе я описал класс Class1. Класс содержит поля стандартных типов, а также поле std::string и...

Как вывести list<string>? - C++
list&lt;string&gt; the_list_input;

Как вывести в файл list<string>? - C++
как вывести в файл список (list)? string symbol; list&lt;string&gt; the_list_input;

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
serejkus
47 / 45 / 4
Регистрация: 31.10.2011
Сообщений: 98
16.09.2012, 19:38 #2
Вообще, этот код компилироваться не должен - много ошибок (типа неизвестного heal в 11 строке, закрывающейся скобки в 22).
Ваш способ вывода строк вполне нормальный, единственное - в обоих случаях в цикле я бы использовал const_iterator вместо iterator.
Oktaram
0 / 0 / 0
Регистрация: 11.09.2012
Сообщений: 19
16.09.2012, 19:55  [ТС] #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
42 / 42 / 11
Регистрация: 13.09.2012
Сообщений: 196
16.09.2012, 19:55 #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  [ТС] #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
42 / 42 / 11
Регистрация: 13.09.2012
Сообщений: 196
16.09.2012, 20:02 #6
Добавьте #include <string>

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

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

Вам нужно подключить #include <string>
Oktaram
0 / 0 / 0
Регистрация: 11.09.2012
Сообщений: 19
16.09.2012, 20:06  [ТС] #7
А слона-то я и не заметил...
Спасибо.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.09.2012, 20:06
Привет! Вот еще темы с ответами:

Как воспользоваться set_intersection для двух list<string> - C++
как воспользоваться функцией set_intersection для двух листов list&lt;string&gt; list1, list2; ?

Как добавить и вывести элементы из List<int, string> ? - C++
В инете нашёл инфу только по обычным спискам (одного типа). Помогите, как в такой список добавить элементы и как потом вывести на экран? ...

Вывод на экран List<Obj> - C++
Задача стояла так, нужно было продемонстрировать работу list и vector сначала с типом int (с чем я справился), а потом тоже самое сделать с...

Контейнер list, вывод содержимого в заданном порядке - C++
Как с помощью двунаправленных итераторов вывести содержимое списка в таком порядке: первый эл-т,последний,второй эл-т,предпоследний и...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
16.09.2012, 20:06
Ответ Создать тему
Опции темы

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