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

считывание без указателей - C++

Восстановить пароль Регистрация
 
 
Андрей Xomach
8 / 8 / 0
Регистрация: 22.01.2012
Сообщений: 59
12.08.2013, 20:29     считывание без указателей #1
В общем, понадобилась функция read <type> () или read(), с аргументами без &, через запятую, одного типа. Это вообще возможно? Inline не помогает.
макро с _ не подходит.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Jupiter
Каратель
Эксперт C++
6542 / 3962 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
12.08.2013, 20:31     считывание без указателей #2
какой read ? о чем вы?
Андрей Xomach
8 / 8 / 0
Регистрация: 22.01.2012
Сообщений: 59
12.08.2013, 20:35  [ТС]     считывание без указателей #3
в макросе, как аргумент, есть список переменных. пусть будут инты: a , b , c... надо из консоли в них как-то считать инфу.
Мимино
 Аватар для Мимино
180 / 151 / 5
Регистрация: 22.05.2013
Сообщений: 435
Записей в блоге: 1
12.08.2013, 20:58     считывание без указателей #4
Цитата Сообщение от Jupiter Посмотреть сообщение
какой read ? о чем вы?
Может этот
C++
1
istream& read (char* s, streamsize n);
Андрей Xomach
8 / 8 / 0
Регистрация: 22.01.2012
Сообщений: 59
12.08.2013, 21:07  [ТС]     считывание без указателей #5
да просто название
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
12.08.2013, 21:11     считывание без указателей #6
Цитата Сообщение от Андрей Xomach Посмотреть сообщение
да просто название
Может, всё-таки, макрос покажите? Или гадать всем, что у вас там?
zss
Модератор
Эксперт С++
 Аватар для zss
5942 / 5547 / 1783
Регистрация: 18.12.2011
Сообщений: 14,154
Завершенные тесты: 1
12.08.2013, 21:15     считывание без указателей #7
а передача по ссылке не подойдет:
C++
1
2
3
4
5
6
7
8
9
void read(int &x)
{
    cin>>x;
}
int main()
{
   int k;read(k);
   cout<<k;
}
Андрей Xomach
8 / 8 / 0
Регистрация: 22.01.2012
Сообщений: 59
12.08.2013, 21:20  [ТС]     считывание без указателей #8
да что тут показывать ?
C++
1
2
#define mcin(type, list...)\
    type list;\
хочу 1 макро создать переменные и считать их, но для считывания нужны указатели, а для создания нет. Тут и застрял.
Андрей Xomach
8 / 8 / 0
Регистрация: 22.01.2012
Сообщений: 59
12.08.2013, 21:31  [ТС]     считывание без указателей #9
zss, именно, то, что надо , осталось только для неопр. числа аргументов сделать

Добавлено через 7 минут
а.. так можно? )
а как? )
только сообразил, что va_arg бессилен похоже
Убежденный
Системный программист
 Аватар для Убежденный
14173 / 6188 / 981
Регистрация: 02.05.2013
Сообщений: 10,295
Завершенные тесты: 1
12.08.2013, 23:05     считывание без указателей #10
Андрей Xomach, то есть, Вы хотите что-то типа такого:

Ввели код:
C++
1
GET_VALUES(a,b,c); // Количество аргументов может быть разным.
Получили на самом деле:
C++
1
2
3
4
5
6
7
int a;
int b;
int c;
 
std::cin >> a;
std::cin >> b;
std::cin >> c;
Я правильно понял ?
Андрей Xomach
8 / 8 / 0
Регистрация: 22.01.2012
Сообщений: 59
13.08.2013, 09:56  [ТС]     считывание без указателей #11
Убежденный, нет, это вроде есть:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
template <typename tp>
tp getc(){
    tp x;
    cin >> x;
    return x;
}
 
#define get_l(list)\
    int list = getc <int> ();
#define _ = getc <int> (),
 
//пример
int main(){
    get_l(a _ b _ c);
    printf("%d %d %d", a, b, c);
}
я хочу
C++
1
GET_VALUES(type, a, b, c...);
в
C++
1
2
3
4
5
6
7
type a;
type b;
type c;
 
cin >> a;
cin >> b;
cin >> c;
Wolkodav
 Аватар для Wolkodav
599 / 452 / 32
Регистрация: 18.09.2012
Сообщений: 1,685
13.08.2013, 10:07     считывание без указателей #12
Может я не правильно понял:
C++
1
2
3
4
5
6
7
8
9
10
template<typename T>
void read(T& a,...)
{
    T* p = &a;
    while (*p)
    {
        cin >> *p;
        p++;
    }
}
Хз прокатит ли такое, не знаю, если честно.
Андрей Xomach
8 / 8 / 0
Регистрация: 22.01.2012
Сообщений: 59
13.08.2013, 10:11  [ТС]     считывание без указателей #13
Wolkodav, если правильно понимаю, ты будешь писать в следующие за а в памяти участки.
Wolkodav
 Аватар для Wolkodav
599 / 452 / 32
Регистрация: 18.09.2012
Сообщений: 1,685
13.08.2013, 10:14     считывание без указателей #14
Андрей Xomach, начиная с 'a' и далее.
Андрей Xomach
8 / 8 / 0
Регистрация: 22.01.2012
Сообщений: 59
13.08.2013, 10:20  [ТС]     считывание без указателей #15
ну так при создании они не в соседние участки памяти помещаются, если вы об этом.
Wolkodav
 Аватар для Wolkodav
599 / 452 / 32
Регистрация: 18.09.2012
Сообщений: 1,685
13.08.2013, 10:22     считывание без указателей #16
Андрей Xomach, если вы их передаёте в функцию, то они находятся в стеке, друг за другом.
Андрей Xomach
8 / 8 / 0
Регистрация: 22.01.2012
Сообщений: 59
13.08.2013, 10:27  [ТС]     считывание без указателей #17
или все же в соседние. надо разобраться

Добавлено через 10 секунд
Wolkodav, их копии

Добавлено через 4 минуты
C++
1
2
3
4
5
6
7
8
9
10
int main(){
    int a, b, c, d;
    int* sa = &a;
    cin >> *sa;
    for (int i = 1; i < 4; i++){
        sa++;
        cin >> *sa;
    }
    cout << a << b << c << d;
}
при вводе 1 2 3 4
на выходе 1432
это значит, что в памяти они будут помещаться всегда в таком порядке, или частный случай?
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11800 / 6779 / 765
Регистрация: 27.09.2012
Сообщений: 16,829
Записей в блоге: 2
Завершенные тесты: 1
13.08.2013, 10:31     считывание без указателей #18
Цитата Сообщение от Андрей Xomach Посмотреть сообщение
то значит, что в памяти они будут помещаться всегда в таком порядке, или частный случай?
Это UB.
Wolkodav
 Аватар для Wolkodav
599 / 452 / 32
Регистрация: 18.09.2012
Сообщений: 1,685
13.08.2013, 10:33     считывание без указателей #19
Андрей Xomach, какие такие копии? Я туда ссылку шурую. Никакой копии там нету) Туда ссылка суётся)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.08.2013, 10:43     считывание без указателей
Еще ссылки по теме:

Привсоение масиву указателей объекты без имени C++
как записать в массив без указателей C++
C++ Считывание из текстового файла. Считывает мусор без остановки

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

Или воспользуйтесь поиском по форуму:
Андрей Xomach
8 / 8 / 0
Регистрация: 22.01.2012
Сообщений: 59
13.08.2013, 10:43  [ТС]     считывание без указателей #20
не понял, тогда так получается вызов:
C++
1
read(a, &b, &c, &d);
???
сейчас проверю

Добавлено через 5 минут
кажется работает, только надо их не нулями инициализировать, можно без инициализации сделать?

Добавлено через 2 минуты
нет, чушь, тоже, что и с
предыдущим моим кодом происходит. Вы берете указатель не на первый элемент стека КОПИЙ, а на "а". И пишете в следующие участки памяти, то же, что и в сообщении (18) делаете.
Yandex
Объявления
13.08.2013, 10:43     считывание без указателей
Ответ Создать тему
Опции темы

Текущее время: 05:23. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru