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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 17, средняя оценка - 4.71
underwaterspace
2 / 2 / 0
Регистрация: 29.01.2013
Сообщений: 47
#1

ostream_iterator - C++

10.08.2013, 19:35. Просмотров 3216. Ответов 10
Метки нет (Все метки)

Имеется массив объектов string - result и текстовой файл. При выводе на экран с помощью
C++
1
2
ostream_iterator<string,char>out(cout,"\n")
copy(result.begin(),result.end(),out);
на каждой строке находится по объекту string. Но при попытке вывести в файл
C++
1
2
3
ofstream res;
res.open("1.txt");
copy(result.begin(),result.end(),ostream_iterator<string,char>(res,"\n"));
все объекты пишутся слитно. Что не так?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.08.2013, 19:35
Здравствуйте! Я подобрал для вас темы с ответами на вопрос ostream_iterator (C++):

Ostream_iterator - C++
не умею пользоваться ostream_iterator,кто подскажет что я должен поставить вместо ??? map&lt;string, int&gt;city = { {&quot;Berlin&quot;,0}, ...

STL и ostream_iterator - C++
Здравствуйте, товарищи! Вопрос к знатокам библиотеки STL. Решая одну задачу в которой надо было посчитать некоторые точки, каждая из...

Ostream_iterator - в чем ошибка? - C++
Пишу код (один в один с книги), но выдает ошибку в 14 строке, а именно (std::cout, &quot;. &quot;); Учебник: Лафоре, страница 720. Весь код: ...

Вывод map через ostream_iterator<> - C++
Не могу понять, оператор вывода для pair перегрузил, а код не компилируется. Как правильно сделать? Вот небольшой пример:#include...

Параметр шаблона ostream_iterator по умолчанию - C++
Помогите найти ошибку, не могу понять в чем проблема:#include &lt;iostream&gt; #include &lt;iterator&gt; #include &lt;vector&gt; #include &lt;algorithm&gt; ...

ostream_iterator, copy и пользовательский тип данных - C++
Здравствуйте. #include&lt;iostream&gt; #include&lt;fstream&gt; #include&lt;string&gt; #include&lt;sstream&gt; #include&lt;set&gt; #include&lt;vector&gt; ...

10
igorrr37
1648 / 1276 / 133
Регистрация: 21.12.2010
Сообщений: 1,932
Записей в блоге: 7
10.08.2013, 19:45 #2
попробуй в качестве разделителя
C++
1
"\r\n"
1
alex1392
31 / 31 / 3
Регистрация: 24.07.2013
Сообщений: 187
10.08.2013, 20:41 #3
Цитата Сообщение от igorrr37 Посмотреть сообщение
попробуй в качестве разделителя
C++
1
"\r\n"
ябы сказал что тут разделитель данного плана подходит но это до ближайшего класса работает нормально _)
0
gromo
372 / 271 / 24
Регистрация: 04.09.2009
Сообщений: 1,214
10.08.2013, 22:49 #4
А как завершить ввод? Просто вот это:
C++
1
copy(istream_iterator<string>(cin),istream_iterator<string>() ,ostream_iterator<string>(cout, " ") );
бесконечно ждет ввода.

скопировал этот пример с cplusplus.com
C++
1
2
3
4
5
6
7
8
9
10
11
12
double value1, value2;
  std::cout << "Please, insert two values: ";
 
  std::istream_iterator<double> eos;              // end-of-stream iterator
  std::istream_iterator<double> iit (std::cin);   // stdin iterator
 
  if (iit!=eos) value1=*iit;
 
  ++iit;
  if (iit!=eos) value2=*iit;
 
  std::cout << value1 << "*" << value2 << "=" << (value1*value2) << '\n';
считывает как и оговорено: 2 числа.
Волшебство? Помогите, пожалуйста.
0
Olivеr
412 / 408 / 13
Регистрация: 06.10.2011
Сообщений: 832
10.08.2013, 23:08 #5
Цитата Сообщение от gromo Посмотреть сообщение
бесконечно ждет ввода.
Ctrl + Z для завершения
Цитата Сообщение от gromo Посмотреть сообщение
Волшебство?
нет. все как и должно быть. не понятно - читайте документацию
0
Toshkarik
1147 / 864 / 51
Регистрация: 03.08.2011
Сообщений: 2,404
Завершенные тесты: 1
10.08.2013, 23:08 #6
gromo, для Win - CTRL + Z.
0
gromo
372 / 271 / 24
Регистрация: 04.09.2009
Сообщений: 1,214
10.08.2013, 23:25 #7
Olivеr, это понятно, но если у меня есть еще дальше программа для исполнения, то при CTRL+Z она не выполнится.
Подозреваю, что copy(), возможно, не сдвигает итератор.... Документацию "храню под подушкой", но ничего такого не вычитал. Так в чем же дело??
0
Toshkarik
1147 / 864 / 51
Регистрация: 03.08.2011
Сообщений: 2,404
Завершенные тесты: 1
10.08.2013, 23:27 #8
gromo, ctrl + z устанавливает флаг eof в потоке ввода. Что бы его восстановить:
C++
1
2
copy(istream_iterator<string>(cin),istream_iterator<string>() ,ostream_iterator<string>(cout, " ") );
cin.clear();
0
gromo
372 / 271 / 24
Регистрация: 04.09.2009
Сообщений: 1,214
10.08.2013, 23:37 #9
Toshkarik, а можно для тупых? В том примере с cplusplus.com я никаких комбинаций не нажимал. Как это было достигнуто?
0
Toshkarik
1147 / 864 / 51
Регистрация: 03.08.2011
Сообщений: 2,404
Завершенные тесты: 1
10.08.2013, 23:44 #10
gromo, Вы там всего 2 раза инкрементируете итератор. В первом же случае это происходит до тех пор, пока итератор не будет равен итератору по умолчанию ( istream_iterator< T >()), а это произойдет при завершении ввода ( ctrl + z ) или ошибки потока.
1
gromo
372 / 271 / 24
Регистрация: 04.09.2009
Сообщений: 1,214
11.08.2013, 00:02 #11
Toshkarik, да, это то, что я искал. Благодарю.
Как же стыдно стало( Обычно я люблю разбираться в различных тонкостях стандарта с++, но увы.
0
11.08.2013, 00:02
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.08.2013, 00:02
Привет! Вот еще темы с ответами:

Вывод map через ostream_iterator с использованием алгоритма reverse_copy!!! - C++
У меня есть два класса Time и Patient, я засунул их в map (ключ Time, значение - Patient), и мне надо вывести через ostream_iterator в...

Объясните пожалуйста как тут работает сортировка и что такое ostream_iterator<string> - C++
вот код. Объясните пожалуйста как тут работает сортировка, сам не могу разобраться. Оссобенно это ostream_iterator&lt;string&gt; не понимаю...

Что значит? ostream_iterator<int>(cout, " "); - C++
Что значит? ostream_iterator&lt;int&gt;(cout, &quot; &quot;));

Подобие istream/ostream_iterator<T> в Qt - C++ Qt
Добрый день. Подскажите есть ли что-то подобное в Qt? istream_iterator&lt;string&gt;()


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

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

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