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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 8, средняя оценка - 4.63
Olga_CS
Сообщений: n/a
#1

Istream_iterator - C++

29.05.2009, 04:18. Просмотров 1028. Ответов 0
Метки нет (Все метки)

Есть задача: надо заменить циклы в программе на что-то с использование обобщеенного проргаммирования и std library функций:

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
#include <string>
#include <iostream>
#include <sstream>
#include "merge.h"
#include <algorithm> // for sort()
 
using namespace std;
 
typedef int T;
 
int main (int argc, char **argv)
{
  string line;
 
  getline (cin, line);
  int n1 = 0;
  {
    // Count number of items we can read from line
    T data;
    istringstream in (line);
    while (in >> data)
      ++n1;  }
  T* array1 = new T[n1];
  {
    // Read the data into array1
    istringstream in (line);
    for (int i = 0; i < n1; ++i)
      in >> array1[i];
  }
....
Первый цикл я заменила на
istream_iterator<T> iter1(in);
int n1 = count_if(iter1, istream_iterator<T>(), size1);

соответственно size1() функция:
int size1(T s)
{
int n;
n++;
}

Проблема в том что если я ввожу строку 1 2 3 привет 5, то n1=3, а надо что бы было =4. Как сделать так что бы код не останавливался на первом не integer типе и доходил до конца?


Второй цикл я заменила на:
istream_iterator<T> iter1(in);
copy (iter1, istream_iterator<T>(), ostream_iterator<T>(cout, "; "));
copy (iter1, istream_iterator<T>(), array1);


Если я ввожу 1 2 3 4 5, то вторая строка выдает правильный ответ = 1 2 3 4 5, но эти значения не копируются в array1 (копируется только первый элемент, а потом что-то непонятное...) Почему?

Спасибо.
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.05.2009, 04:18
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Istream_iterator (C++):

istream_iterator - C++
Каким образом итератор std::istream_iterator&lt;int&gt; ii(std::cin); определяет сколько строк надо вводить? &quot;for(int i = 0; i &lt; (реагирует на...

istream_iterator - C++
Почему столько ошибок? И как их исправить? Программа из книги, но почему-то не работает. #include &lt;iostream&gt; #include &lt;algorithm&gt; ...

istream_iterator - C++
Добрый день, уважаемые форумчане! Прошу ответить на следующий вопрос - почему, когда создается istream_iterator пустым конструктором...

Istream_iterator back_inserter - C++
привет всем ! есть такой код vector&lt;int&gt; vec; copy(istream_iterator&lt;int&gt;(cin), istream_iterator&lt;int&gt;(), (vec)); for(int i =...

Istringstream, istream_iterator - C++
std::string string1 std::cout &lt;&lt; &quot;Введите первую неубывающую последовательность натуральных чисел: &quot;; getline(std::cin, string1); ...

Отличие istreambuf_iterator от istream_iterator - C++
Прочитал все найденные похожие темы... Протестировал все, что можно... Но отличий так найти и не смог этих двух итераторов... Оба являются...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.05.2009, 04:18
Привет! Вот еще темы с ответами:

Borland c++ 5.02 ругается на istream_iterator - C++
Здравствуйте. Компилятор старый, но нужен именно он. В инклудах есть iterator.h Не могу запустить код из книжки братьев дейтеил. ...

Visual studio и istream_iterator - C++
проблема в том, что visual studio 2013 не хочет вводить из файла строки в вектор строк с помощью istream_iterator. Причем, с остальными...

Разница межу istream_iterator и istreambuf_iterator - C++
что это за буфер во втором случае? И что он дает в отличие от первого варианта? Что-то доку переварить никак не получается...

Как исправить код с istream_iterator? - C++
Как исправить этот код, чтобы ввод заканчивался при вводе слова quit? Можно ли сделать с итераторами или уже нужно в простом цикле ввод...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

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