
Evgen
26.03.2017
11:12:05
Вообще бы написать конструкцию из std::copy...
Но я не помню, как

Serg
26.03.2017
11:12:40
stream_iterator<string> is_it(cin);
istream_iterator<string> eos;
while (is_it != eos)
{
cout « *is_it « "\n";
++is_it; //вот здесь поток требует ввести значение на посл. проходе,как этот момент пофиксить )
}

Evgen
26.03.2017
11:14:09
std::copy(v.begin(), v.end(), std::ostreambuf_iterator(cout, " ")); // Выведет содержимое контейнера v, каждый элемент через пробел

Google

Evgen
26.03.2017
11:14:29
Пишу по памяти, могу ошибаться

Serg
26.03.2017
11:20:40
ничего хорошего
я хочу заполнить контейнер (std::map) парами из cin через этот итератор

Evgen
26.03.2017
11:22:28

Serg
26.03.2017
11:23:11
istream_iterator<string> is_it(cin);
istream_iterator<string> eos;
string key;
int val;
int i = 0;
while (is_it != eos)
{
if (i % 2 == 0)
{
key = *is_it;
}
else
{
val = atoi((*is_it).c_str());
map[key] = val;
}
i++;
++is_it;
}

Evgen
26.03.2017
11:24:29

Serg
26.03.2017
11:24:29
через copy так не выйдет думаю

Evgen
26.03.2017
11:24:37
Имхо читабельнее будет
А суть та же

Serg
26.03.2017
11:26:24
ага, ок!

Google

Evgen
26.03.2017
11:26:53
А вот с проблемой...
К сожалению, помочь не смогу
Но можно скостылить

Serg
26.03.2017
11:27:46
должен быть крутой способ, чувствую это жопой!

Evgen
26.03.2017
11:28:12
Я так думаю, должно помочь

Serg
26.03.2017
11:30:03
(как ты цитируешь?)

Evgen
26.03.2017
11:30:30

Serg
26.03.2017
11:31:05

Evgen
26.03.2017
11:31:12

Serg
26.03.2017
11:32:18
if (is_it == eos) continue; добавил
жи есть!

Evgen
26.03.2017
11:36:25

Serg
26.03.2017
11:36:38

Evgen
26.03.2017
11:36:46
Хах
Не всё так просто

Serg
26.03.2017
11:39:12
чет не понимаю почему твой способ не работает

Evgen
26.03.2017
11:46:55
¯\_(ツ)_/¯

Surreal
26.03.2017
11:53:48
нет )
У вас в cin данные откуда поступают?

Serg
26.03.2017
11:54:05
с клавиатуры

Google

Surreal
26.03.2017
11:54:35
И как вы расчитываете eof получить с клавиатуры?

Serg
26.03.2017
11:56:02
eof в данном случае должен быть в конце ввода

Surreal
26.03.2017
11:56:17
А как вы его вводите?

Serg
26.03.2017
11:56:40
его принимает cin когда пользователь нажимает enter

Surreal
26.03.2017
11:57:18
Т.е. можно только одну строку ввести, и все, сразу eof?

Serg
26.03.2017
11:58:14
да

Surreal
26.03.2017
11:58:20
Ага.
Интересный факт: нажатие на enter - это eol, а не eof
У вас какой формат входных данных?
s1 1 s2 2 s3 3? или:
s1 1
s2 2
s3 3

Serg
26.03.2017
12:01:39
s1 1 s2 2 s3 3 - вот этот

Surreal
26.03.2017
12:06:03
Читайте через getline строку с std::cin, дальше либо парсите ее, либо оборачивайте в stringstream и из него читайте.
Как-то так: http://ideone.com/dCQf6p

Serg
26.03.2017
12:23:46
да, жаль через итератор не вышло) спасибо

Surreal
26.03.2017
12:25:30
Проверяйте на eol ('\n'), а не eof, тогда будет работать.
while(it->length() != 0)

Serg
26.03.2017
12:52:40
а это не тоже самое что и eos?
с итератором не получается вобще
*вобщем

Surreal
26.03.2017
12:54:20
Нет, это не то же самое. Возможно, итератор скипает конец строки.
Собсна, все верно. std::cin по дефолту скипает символ конца строки (в том числе), за это отвечает skipws флаг. Итератор же идет по >>.

Google

Surreal
26.03.2017
13:29:08
Желаемый результат будет только в случае посимвольного чтения. Так что не надо городить велосипедов.

Serg
26.03.2017
13:36:47
ну да, зато в cout легко поместить через итератор
ostream_iterator<string> os_it(cout, "\n");
for (auto it : map)
{
os_it = it.first + " " + to_string(it.second);
os_it++;
}
интересно, а можно как нибудь std::pair туда помещать, для этого надо потоку cout указать как их выводить только...

Surreal
26.03.2017
13:40:52
Вы совсем недавно начали на C++ писать, да? Не надо так делать.

melancholiac
26.03.2017
13:43:14
некоторое количество времени я думал что тут один человек сам с собой беседует.....

Serg
26.03.2017
14:37:49

Surreal
26.03.2017
14:38:14

Serg
26.03.2017
14:38:38
Объясните, почему не стоит

Surreal
26.03.2017
14:41:38
Потому что есть очевидный, чистый вариант:
for (auto &e: map) {
std::cout << e.first << " " << e.second << "\n"
}
В вашем же на каждую итерацию по 3 временных объекта создается.

Александр
26.03.2017
14:42:41
К тому же, итераторами по вводу/выводу пользуются в алгоритмах, но уж точно не в for'е

Serg
26.03.2017
14:44:27
(чисто чтобы "вкурить" потоки)

Александр
26.03.2017
15:16:32
Вроде для новичков есть чатик :)

Oleg
26.03.2017
15:17:58
@smertig чтоб тебе новички отвечали? Нет! Спасибо уж.

Александр
26.03.2017
15:18:32
Так я видел, как автор вопроса задал его там, не получил ответа и пришел сюда

Oleg
26.03.2017
15:19:01
Тем более. Автору ачивку "Молодец." нужно дать.

Serg
26.03.2017
15:19:12
Я ужк почти джун,не новичок)

Александр
26.03.2017
15:27:42
А каким образом определяется текущее мастерство? Не считая должности

Gregory
26.03.2017
15:28:03

Александр
26.03.2017
15:28:42
Ну это понятно. Может какие-то более конкретные характеристики есть

Google

Gregory
26.03.2017
15:29:23
это самая лучшая характеристика в чате
а так в целом - результаты работы человека, его код )

Александр
26.03.2017
15:30:36
А если у меня все работы приватные?)

Gregory
26.03.2017
15:31:18
то остается только уровень обсуждения )

Александр
26.03.2017
15:31:19
Это я так, к примеру
Ага

Evgeniy
26.03.2017
15:35:11

Александр
26.03.2017
15:36:09

Gregory
26.03.2017
15:59:30

Dmitri
26.03.2017
16:06:11

Gregory
26.03.2017
16:06:35
И не то что бы какой то продукт там хранить, а просто образец кода - как ты пишешь

Александр
26.03.2017
16:07:05

Gregory
26.03.2017
16:08:02
самое сложное придумать чтобы такое сделать как этот самый образец )
с адекватными времязатратами

Dmitri
26.03.2017
16:12:47
ну например когда студент, это совсем плохо. т.к. иначе вообще непонятно что за человек
ладно еще кто-то с опытом работы

Gregory
26.03.2017
16:13:05
со студентами - ок, да.

Dmitri
26.03.2017
16:13:30
кстати, покритикуйте плиз https://www.reddit.com/r/cpp/comments/61m9r1/what_do_you_think_about_properties_in_the_c/