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

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

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

copy, iterator, vector - C++

14.02.2014, 17:44. Просмотров 646. Ответов 6
Метки нет (Все метки)

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <istream>
#include <vector>
#include <algorithm>
#include <iterator>
 
 
int main( ) {
    
    std::vector <int> ivec;
    
    
    std::copy(std::istream_iterator<int, char> (std::cin), std::istream_iterator<int, char> () ,  back_inserter(ivec));
    
    std::copy(ivec.begin(), ivec.end(), std::ostream_iterator<int, char>( std::cout, " "));
    return 0;
}
Как сделать , что-бы в написанной программе вводимый поток чисел останавливался с помощью кнопки "Enter",
а не "Cntrl + d" ?
Лучшие ответы (1)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Tulosba
:)
Эксперт С++
4390 / 3233 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
14.02.2014, 17:51     copy, iterator, vector #2
Цитата Сообщение от mercury1987 Посмотреть сообщение
ак сделать , что-бы в написанной программе вводимый поток чисел останавливался с помощью кнопки "Enter",
Никак. Надо переписывать. Чтобы например принимать строку, а поток разбивать ее на части.
P.S. второй аргумент шаблона по умолчанию и так char. Т.е. можно не указывать.
mercury1987
0 / 0 / 0
Регистрация: 12.12.2013
Сообщений: 10
14.02.2014, 17:58  [ТС]     copy, iterator, vector #3
а как это сделать? хотя-бы примерно.
raccoonlove
Заблокирован
14.02.2014, 18:01     copy, iterator, vector #4
mercury1987, можно просто считать строку и ёё уже разбить на числа при помощи istringstream. Если подходит, могу показать как.
mercury1987
0 / 0 / 0
Регистрация: 12.12.2013
Сообщений: 10
14.02.2014, 18:04  [ТС]     copy, iterator, vector #5
Цитата Сообщение от raccoonlove Посмотреть сообщение
mercury1987, можно просто считать строку и ёё уже разбить на числа при помощи istringstream. Если подходит, могу показать как.
спасибо, но мне нужно именно с использованием алгоритма "copy()" и "istream_iterator"
gray_fox
What a waste!
1256 / 1139 / 55
Регистрация: 21.04.2012
Сообщений: 2,361
Завершенные тесты: 3
14.02.2014, 18:34     copy, iterator, vector #6
Сообщение было отмечено автором темы, экспертом или модератором как ответ
mercury1987,
C++
1
2
3
4
5
6
7
8
9
#include <sstream>
#include <string>
 
// ...
 
std::string line;
std::getline(std::cin, line);
std::istringstream iss(line);
std::copy(std::istream_iterator<int>(iss), std::istream_iterator<int>(), std::back_inserter(ivec));
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.02.2014, 22:35     copy, iterator, vector
Еще ссылки по теме:

C++ Vector iterator + offset out of range
Vector iterator not incrementable C++
C++ Ошибка “vector<bool> erase iterator outside range” при работе алгоритма Хаффмана
C++ Синхронизация map и vector. Iterator not incrementable
C++ Алгоритм copy, back_inserter и vector

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

Или воспользуйтесь поиском по форуму:
Somebody
2777 / 1591 / 142
Регистрация: 03.12.2007
Сообщений: 4,170
Завершенные тесты: 1
14.02.2014, 22:35     copy, iterator, vector #7
Цитата Сообщение от Tulosba Посмотреть сообщение
Никак.
Ну зачем так сразу?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class NewlineAsPunct : public std::ctype<char>
{
    static const mask* GetTable()
    {
        static mask newTable[table_size];
        const mask* oldTable = classic_table();
        std::copy(oldTable, oldTable + table_size, newTable);
        newTable['\n'] = punct;
        return newTable;
    }
public:
    NewlineAsPunct() : std::ctype<char>(GetTable()) {}
};
...
std::cin.imbue(std::locale(std::cin.getloc(), new NewlineAsPunct));
Yandex
Объявления
14.02.2014, 22:35     copy, iterator, vector
Ответ Создать тему
Опции темы

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