Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
Модератор
1437 / 1044 / 543
Регистрация: 16.10.2013
Сообщений: 3,193
Записей в блоге: 9
1

Создание потока ввода

15.04.2018, 14:42. Просмотров 799. Ответов 3
Метки нет (Все метки)


Объясните, плиз, почему не получается инициализировать поток ввода внутри оператора switch ? код вот такой

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
switch(mode){
        case 1:
                        ...............
            break;
            
        case 2:
            ifstream fin;//не робит
            fin.open("matrix.txt");
            fin >> rows;
            fin >> cols;
            fin.close();
                        .....................
            break;
            
        default:
            ......................
    }
в этом случае возникает ошибка
[Error] crosses initialization of 'std::ifstream fin'

Если же объявить поток до оператора switch, то все работает нормально..

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
ifstream fin;//робит
switch(mode){
        case 1:
                        ...............
            break;
            
        case 2:
            fin.open("matrix.txt");
            fin >> rows;
            fin >> cols;
            fin.close();
                        .....................
            break;
            
        default:
            ......................
    }
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.04.2018, 14:42
Ответы с готовыми решениями:

Перегрузка потока ввода
Помогите мне пожалуйста. Пыта #include <iostream> #include <conio.h> using namespace std; ...

Ошибка потока ввода
Здравствуйте. Подскажите, почему в этой простой программе, ошибка с оператором потокового ввода...

Очистка потока ввода
ПОМОГИТЕ НАЙТИ ОШИБКУ Ребят написал малюсенький фрагмент кода, но уже есть ошибка. после того...

Проверка потока ввода
Всем привет , возникла проблема , которая вызывает затруднения. #include <iostream> ...

3
566 / 349 / 132
Регистрация: 15.09.2017
Сообщений: 1,239
15.04.2018, 14:50 2
Лучший ответ Сообщение было отмечено long399 как решение

Решение

long399, Заключи в блок
C++
1
2
3
4
5
6
7
8
9
case 2: {
        ifstream fin;//не робит
        fin.open("matrix.txt");
        fin >> rows;
        fin >> cols;
        fin.close();
        //.....................
        break;
    }
1
Модератор
1437 / 1044 / 543
Регистрация: 16.10.2013
Сообщений: 3,193
Записей в блоге: 9
15.04.2018, 14:56  [ТС] 3
Avaddon74, спасибо, помогло!
0
566 / 349 / 132
Регистрация: 15.09.2017
Сообщений: 1,239
15.04.2018, 15:03 4
Лучший ответ Сообщение было отмечено long399 как решение

Решение

long399, Объяснение простое, если переменная объявляется не в блоке, то она видна до конца switch, а т.к. у тебя есть инструкция default, то предполагается, что в принципе, ты можешь в default'e обратиться к этой переменной, но и case 2 ты можешь пропустить, поэтому так низя
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.04.2018, 15:03

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь или здесь.

Завершение потока ввода
Всем привет,столкнулся с небольшой проблемой,расскажите почему так происходит собственно.. сама...

Обработка потока ввода
Подскажите, как сделать так, чтобы поток обрезал данные, которые находятся после нужного мне...

Считывание с потока ввода
На стандартном потоке ввода задаётся последовательность целых чисел. Каждое число...

Очистка потока ввода
Собственно тема подымалась в интернете, но внятного объяснения я не получил. Для ввода строки с...


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

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

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