Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
 Аватар для Oneill
5 / 5 / 1
Регистрация: 30.11.2011
Сообщений: 238
Записей в блоге: 1

Возможно ли в переменную записать что угодно?

16.12.2015, 19:13. Показов 767. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Привет.
Столкнулся с такой проблемой.
Допустим пользователь должен ввести 2 аргумента, которые передадутся шаблону-функции, которая принимает любой тип данных, там их меняет местами и выводит на экран... Изи. Но...
Как возможно сделать, что бы пользователь через консоль мог вводить что угодно.
Скажем 1, 2. Или 5.2, 7.3 Или a, b.
Ведь то что он ввел, записывается в переменную. А переменная имеет свой тип. И если она int то пользователь не сможет ввести символ.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
16.12.2015, 19:13
Ответы с готовыми решениями:

Возможно ли записать имя формы в переменную?
возможно ли записать имя формы в переменную на С#

Заданы три положительных числа. В переменную treug записать 1,если возможно построить треугольник с указанными длинами
Заданы три положительных числа. В переменную treug записать 1, если возможно построить треугольник с указанными длинами сторон. MASM

Можно ли убедить кого угодно в чём угодно?
Часто на форуме мы спорим друг с другом, пытаясь доказать другому свою правоту, а зачастую просто навязать свою точку зрения другому...

7
Эксперт С++
 Аватар для hoggy
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
16.12.2015, 19:24
Цитата Сообщение от Oneill Посмотреть сообщение
А переменная имеет свой тип. И если она int то пользователь не сможет ввести символ.
в консольку пользователь всегда вводит буквоки,
которые только выглядят иногда, как цыферки.

соотвественно, проверив и убедившись,
что текст содержит символы обозначающие цыферки,
его можно перегнать в числовую переменную.
0
 Аватар для Oneill
5 / 5 / 1
Регистрация: 30.11.2011
Сообщений: 238
Записей в блоге: 1
16.12.2015, 19:29  [ТС]
Спасибо конечно, что пытался объяснить как дауну))) Но...
C++
1
2
3
int b;
cout << "b = ";
cin >> b;
Ладно, можно написать еще кучку кода и проверить ввел ли пользователь "lol" или "74", Можно так же проверить ввел ли он дробное или целочисленное. Но там столько строк придется писать.. уху. Под десяток завалит почти. Это не правильно.
Как сделать по нормальному?
0
Dimension
595 / 463 / 223
Регистрация: 08.04.2014
Сообщений: 1,710
16.12.2015, 19:31
C++
1
2
3
string a,b;
cin>>a>>b;
swap(a,b);
0
2549 / 1208 / 358
Регистрация: 30.11.2013
Сообщений: 3,826
16.12.2015, 19:35
мне аж интересно стало как это красиво завернуть - сейчас попробую написать)
0
Диссидент
Эксперт C
 Аватар для Байт
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
16.12.2015, 19:44
Цитата Сообщение от Oneill Посмотреть сообщение
Как сделать по нормальному?
Вводить строку и ее анализировать. Парсить. Анализировать на соответствие придуманному тобой синтаксису.
0
2549 / 1208 / 358
Регистрация: 30.11.2013
Сообщений: 3,826
17.12.2015, 15:09
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
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
#include <iostream>
#include <string>
using namespace std;
 
struct Foo{};
 
//////////////////////////////////////////////////////////////////////////
 
struct DeductionFakeType{};
 
union  SwapTypes
{
   int                                       _intType;
   double                                    _doubleType;
   Foo                                       _fooType;
};
 
enum                                         {INT, DOUBLE, FOO, OTHER};
 
template<typename T>
void                                         mySwap( T& one, T& two );
template<>
void                                         mySwap( int& one, int& two );
template<>
void                                         mySwap( double& one, double& two );
template<>
void                                         mySwap( Foo& one, Foo& two );
 
void                                         deductionType( std::string str );
 
//////////////////////////////////////////////////////////////////////////
 
template<typename T>
void mySwap( T& one, T& two )
{
    cout << "not possible to swao with types" << endl;
}
 
template<>
void mySwap( int& one, int& two )
{
   cout << "int" << endl;
}
template<>
void mySwap( double& one, double& two )
{
   cout << "double" << endl;
}
template<>
void mySwap( Foo& one, Foo& two )
{
   cout << "Foo" << endl;
}
 
void deductionType(std::string str)
{  
   int result = OTHER;
   std::pair<SwapTypes, SwapTypes> variables;
 
   // deduction type and call swap with type-dependence arguments
   result = INT;
   variables.first._intType = 1;
   variables.second._intType = 2;
   
   switch(result)
   {
      case DOUBLE:   mySwap( variables.first._doubleType, variables.second._doubleType );      break;
      case INT:      mySwap( variables.first._intType, variables.second._intType );            break;
      case FOO:      mySwap( variables.first._fooType, variables.second._fooType );            break;
 
      default:       mySwap( DeductionFakeType(), DeductionFakeType() );                       break;
   }
}
 
//////////////////////////////////////////////////////////////////////////
 
int main()
{
   std::string str;
   //std::getline( std::cin, str );
   deductionType( str );
}
0
Эксперт С++
 Аватар для hoggy
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
17.12.2015, 19:23
Цитата Сообщение от rikimaru2013 Посмотреть сообщение
template<typename T>
void mySwap( T& one, T& two )
{
* * cout << "not possible to swao with types" << endl;
}
T& раскроются в неконстантную ссылку для аргументов,
которые не являются константными.

поэтому:

Цитата Сообщение от rikimaru2013 Посмотреть сообщение
default: * * * mySwap( DeductionFakeType(), DeductionFakeType() );
временные объекты не будут являться константными,
а значит возникнет попытка передать временные объекты
по не константной ссылке.


Code
1
2
3
4
5
6
7
8
9
source_file.cpp: In function ‘void deductionType(std::string)’:
source_file.cpp:71:71: error: invalid initialization of non-const reference of type ‘DeductionFakeType&’ from an rvalue of type ‘DeductionFakeType’
       default:       mySwap( DeductionFakeType(), DeductionFakeType() );                       break;
                                                                       ^
source_file.cpp:34:6: note: in pas
 
sing argument 1 of ‘void mySwap(T&, T&) [with T = DeductionFakeType]’
 void mySwap( T& one, T& two )
      ^
лекарство:

заменить:
Цитата Сообщение от rikimaru2013 Посмотреть сообщение
default: * * * mySwap( DeductionFakeType(), DeductionFakeType() );
на:

C++
1
2
3
4
5
6
7
default:
{
    DeductionFakeType f1, f2;
    mySwap(f1,f2);  // <--- для того, что бы этот код работал
        // достаточно что бы передаваемые объекты 
      //просто не были временными
}
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
17.12.2015, 19:23
Помогаю со студенческими работами здесь

Возможно ли целочисленную переменную записать в файл как целочисленную, а не её символьное представление?
Возможно при помощи operator&lt;&lt; переменную типа int записать в файл как int, а не её символьное представление? речь идёт о сохранении в...

Надо нарисовать паровозик/машину/что угодно, что будет двигаться по экрану
старенький quick бейсик. Почему нас им мучать решили в школе... (((Народ, кто в нем что-нибудь понимает - нужна помощь:Надо нарисовать...

как записать переменную и что бы цикл выполнялся
Всем привет! Я зеленый новичок и нуждаюсь в совете. Есть код: var counter = ; for (var i = 1;i &lt;= 24;i++) { ...

Записать в переменную все что после http://vivka.com/
Записать в переменную все что после http://vivka.com/ то есть из http://vivka.com/clos5678 , записать clos5678.

Как вытащить то что находится в qq.href и записать в переменную $rnd
есть код function wmlclaFb3AY4(ee, ww, qq){ if (qq.href.indexOf('&amp;') &lt; 0){ qq.href += '&amp;rnd=1352734.5794206';...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru