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

Объект cin и класс istream - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Вывести в файл число с заданным количеством знаков после точки http://www.cyberforum.ru/cpp-beginners/thread758464.html
Как это сделать, нигде не нашёл.(
C++ Связный список указателей Здравствуйте! Может кто нибудь объяснить и разложить по полочкам приведенную ниже программу. Сам чето не врублюсь. Особенно в то, что делает функция additem, и ,что значит if ( ! first ). В каких это случаях ветвление if ( !first) будет работать? #include <iostream> using namespace std; /////////////////////////////////////////// struct link { int data; link* next; }; http://www.cyberforum.ru/cpp-beginners/thread758454.html
C++ Не удается открыть файл включение: StdAfx.h: No such file or directory
заголовочный файл #include <iostream> #include <conio.h> #include <math.h> using namespace std; class Complex // класс компелексных чисел { protected:
C++ Ошибка при выводе 1-го элемента массива, но правильно выводит последний
Помогите пожалуйста найти ошибку (почему не выводит переменную а?): #include "stdafx.h" #include <stdio.h> #include <conio.h> #include <string.h> #include <stdlib.h> #include <time.h> int main(int argc, char* argv) { int i,r,n,mas; FILE *f; int a,b,c;
C++ мне нужно, чтобы решение сохранялось в файл http://www.cyberforum.ru/cpp-beginners/thread758433.html
помогите, пожалуйста, с кодом. мне нужно, чтобы решение сохранялось в файл. то есть была сохранена исходная матрица, преобразованное и текст. а то почему то у меня не получается (( #include "stdafx.h" #include "locale.h" #include "conio.h" #include "stdlib.h" #include "time.h"
C++ Помогите, пожалуйста, исправить ошибки в коде const int n=20; int b; int i,j,c; for (i=1;i>n,i++) { c=a; for(j=i-1;j>=0&&a>c;j--) a=a; a=c; } подробнее

Показать сообщение отдельно
xtorne21st
интересующийся
303 / 274 / 19
Регистрация: 25.09.2010
Сообщений: 1,056

Объект cin и класс istream - C++

11.01.2013, 04:56. Просмотров 1894. Ответов 3
Метки (Все метки)

В учебнике приводиться такое задание:
"Напишите функцию, получающую и возвращающую ссылку на объект класса istream. Фукнция должна читать данные из потока до тех пор, пока не будет достигнут конец файла. Функция должна выводить прочитанные данные на стандартное устройство вывода. Перед возвращением потока, верните все значения его флагов в допустимое состояние. Проверьте созданную функцию, передав ей при вызове объект cin в качестве аргумента ".
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
31
32
33
34
35
36
37
#include <stdexcept>
#include <istream>
#include <iostream>
 
using namespace std;
 
istream &myfunc(istream &arg);
 
int main()
{
myfunc(cin);
 
return 0; 
}
 
istream &myfunc(istream &arg)
{
    register int i;
    istream::iostate old_state;
 
    old_state = arg.rdstate();
    cin.clear();
    while (arg >> i && !arg.eof()) {
        if (arg.bad())
            throw runtime_error("IO stream corrupted");
        if (arg.fail()) {
            cerr << "bad data, try again";
            arg.clear(istream::failbit);
            continue;
        }
        cout << i; 
    }
    cin.clear();
    cin.clear(old_state); 
 
    return arg; 
}
У меня вопрос: "Почему если во время выполнения функции ввести: 123abc456, то во время передачи в
C++
1
2
3
4
 if (arg.fail()) {
            cerr << "bad data, try again";
            arg.clear(istream::failbit);
            continue;
то цикл обрывается? (а не передаётся инструкции continue на продолжение цикла, как задумано)

Добавлено через 7 минут
т.е. результат вывода будет: 123 вместо 123456
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru