@ProCxx

Страница 702 из 2477
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
Serg
26.03.2017
11:20:40
ничего хорошего

я хочу заполнить контейнер (std::map) парами из cin через этот итератор

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; }

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

Evgen
26.03.2017
11:24:37
Небольшая поправочка к коду: atoi(is_it->c_str());
Дисклеймер: Может не сработать, но это не точно

Имхо читабельнее будет

А суть та же

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
Но можно скостылить
Перед инкрементом добавить то же условие, что и в while

Я так думаю, должно помочь

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

Evgen
26.03.2017
11:30:30
(как ты цитируешь?)
Это не цитаты, а Reply (ответ)

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
Вы совсем недавно начали на C++ писать, да? Не надо так делать.
Да, можно так сказать. Вы про код выше, или про std::pair?

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/

Страница 702 из 2477