Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.89/9: Рейтинг темы: голосов - 9, средняя оценка - 4.89
420 / 357 / 47
Регистрация: 22.05.2013
Сообщений: 2,518
1

Неизвестное количество переменных в функции

24.02.2015, 04:05. Показов 1810. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Гуру, подскажите пожалуйста куда копать!

Нужна функция, которая работает с формат-строкой и переменными.
Примерно это выглядит так:

C++ (Qt)
1
2
3
4
5
6
7
8
9
void my(string filter, ...) {
        char buf[128];
        sprintf(buf, filter, ...);
        // и выполняем запрос из buf
        // ...
}
//варианты запуска:
my("insert into emp values (%d, 'Emp_name_%06d');", i, i);
my("insert into emp values (%d, 'Emp_name');", i);
Как подобная функция определяется?
Как получить количество и типы переменных переданные в функцию?
Как передать эти параметры в sprintf целиком или выборочно?

Хотя бы подскажите название технологии!
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.02.2015, 04:05
Ответы с готовыми решениями:

Cоздание неизвестное заранее количество переменных
Здравствуйте. Как осуществить создание неизвестное заранее количество переменных? Например...

Неизвестное количество строк в двумерном массиве
Как обеспечить ввод неограчиненного числа строк, который прекращается, к примеру, пустой строкой...

Как сделать неизвестное количество вложенных циклов?
в программу будет вводиться n-ное число, это самое число циклов со счетчиком, т. е. for (t=1;...

Как принять заранее неизвестное количество аргументов и передать их в конструктор?
Допустим есть функция которая создает объект template<typename T> T* createObject(typename...

2
Эксперт С++
8739 / 4317 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
24.02.2015, 04:18 2
Лучший ответ Сообщение было отмечено Tester64 как решение

Решение

Цитата Сообщение от Tester64 Посмотреть сообщение
Хотя бы подскажите название технологии!
Функции-эллипсы (ellipses)

http://www.cplusplus.com/refer... /vsprintf/

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
/* vsprintf example */
#include <stdio.h>
#include <stdarg.h>
 
void PrintFError ( const char * format, ... )
{
  char buffer[256];
  va_list args;
  va_start (args, format);
  vsprintf (buffer,format, args);
  perror (buffer);
  va_end (args);
}
 
int main ()
{
  FILE * pFile;
  char szFileName[]="myfile.txt";
 
  pFile = fopen (szFileName,"r");
  if (pFile == NULL)
    PrintFError ("Error opening '%s'",szFileName);
  else
  {
    // file successfully open
    fclose (pFile);
  }
  return 0;
}
Добавлено через 8 минут
Цитата Сообщение от Tester64 Посмотреть сообщение
Как получить количество и типы переменных переданные в функцию?
обычно, информацию о количествах и типах кодируют в первом аргументе.
1
420 / 357 / 47
Регистрация: 22.05.2013
Сообщений: 2,518
24.02.2015, 04:38  [ТС] 3
То что нужно! Спасибо!
0
24.02.2015, 04:38
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.02.2015, 04:38
Помогаю со студенческими работами здесь

Тип переменных в функции, передаваемой как параметр другой функции
есть функция static int filesort(const void *va, const void *vb) { dirent **a=(dirent **)...

Применение переменных одной функции в другой функции
Здравствуйте. Помогите, пожалуйста, решить такую проблему. Мне необходимо, чтобы 4 переменных,...

Вызвать метод принимающий неизвестное количество переменных в Run-Time
Ну собственно сабж. Хотелось бы реализовать данную фишку, а вот как - это уже интересный вопрос....

Возвратить данные из функции, которая имеет заранее неизвестное количество входных параметров
есть некая функция, например: public void func(params object arr) { что-то делается } в main...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru