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

GCC, ввод строки в switch - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Из заданного множества точек на плоскости выбрать такие три точки А, В, С http://www.cyberforum.ru/cpp-beginners/thread946632.html
Из заданного множества точек на плоскости выбрать такие три точки А, В, С, чтобы внутри треугольника АВС содержалось максимальное количество точек этого множества.
C++ Бинарные файлы. Чтение Дан бинарный файл, компонентами которого являются массивы действительных чисел. Вычислить для каждого массива число отрицательных элементов. Записать в другой файл каждое из этих чисел. Как... http://www.cyberforum.ru/cpp-beginners/thread946625.html
C++ windows 7 + win32. Как правильно сохранить проект?
Как правильно сохранить проект? консольный, win32. Чтобы запускался на семерке. Не в компиляторе, а просто как приложение. Ругается на MSVCP100D.dll
C++ uint32, size_t и подобные им
Собственно, в чем смысл данных типов, в отличие от обычных unsigned int, int и подобных им?
C++ Запись на диск без буквы http://www.cyberforum.ru/cpp-beginners/thread946565.html
Как можно записать/считать файл с логического диска без буквы, т.е он скрыт. Что то не получается даже его найти программно. в командной строке mountvol его видит, есть его guid и надпись нет точек...
C++ Посимвольная работа с файлом Доброй ночи, камрады! Простой вопрос такой: необходимо посимвольно считать из текстового файла инфу, затем вывести в консоль сначала буквы, затем цифры, затем все остальное (разделители, знаки... подробнее

Показать сообщение отдельно
Michall
1 / 1 / 0
Регистрация: 31.10.2008
Сообщений: 52
01.09.2013, 15:19  [ТС]
Цитата Сообщение от Croessmah Посмотреть сообщение
Если ввод с консоли, то можно так попробовать:
C++
1
2
3
4
5
6
7
8
9
10
11
void PRINT() // Вводим имя, потом оно выводится. Элементарно.
{
   string NAME;
   cout << "Введите имя: ";
   cin.clear();
   bool state = std::ios::sync_with_stdio ( false ) ;
   std::cin.ignore ( std::cin.rdbuf ( ) -> in_avail ( ) ) ;
   getline(cin, NAME);
   std::ios::sync_with_stdio ( state ) ;
   cout << "\nВы ввели: " << NAME << endl;
}
Ничего себе! Работает.
Кликните здесь для просмотра всего текста


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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
#include <string>
#include <iostream>
using namespace std;
 
void PRINT() // Вводим имя, потом оно выводится. Элементарно.
{
   string NAME;
   cout << "Введите имя: ";
   cin.clear();
   getline(cin, NAME);
   cout << "\nВы ввели: " << NAME << endl;
}
 
void PRINTpro() // Вводим имя, потом оно выводится. Элементарно.
{
   string NAME;
   cout << "(Pro version)/Введите имя: ";
   cin.clear();
   bool state = std::ios::sync_with_stdio ( false ) ;
   std::cin.ignore ( std::cin.rdbuf ( ) -> in_avail ( ) ) ;
   getline(cin, NAME);
   std::ios::sync_with_stdio ( state ) ;
   cout << "\nВы ввели: " << NAME << endl;
}
 
int main()
{
   PRINT(); // Вызываем функцию. Работает.
   cout << endl;
 
/* Самое интересное */
 
   int choice;
   cout << "Введите \"1\",\"2\" или \"3\" для вызова нужной функции. \"4\" для вызова хардкор версии.\n";
   cin >> choice;
   cout << endl;
   switch(choice)
   {
      case 1:
        PRINT(); // НЕ РАБОТАЕТ!
        break;
      case 2:
        PRINT(); // Не работает.
        PRINT(); // Эта работает.
        break;
      case 3: // Конечно, это тоже не работает.
      { string NAME;
        cout << "Введите имя: ";
        cin.clear();
        getline(cin, NAME);
        cout << "\nВы ввели: " << NAME << endl;
        break;
      }  // Пришлось добавить скобки, ибо не компилировалось. wtf?
      case 4:
        PRINTpro(); // Магия! Работает.
        break;
   }
   return 0;
}

Только я абсолютно не понял, как это работает.

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