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

Конфигурационный файл - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Задача на С++ http://www.cyberforum.ru/cpp-beginners/thread394132.html
Вот щас сижу смотрю на эту задачу и понимаю, что нехер было в выходные балду пинать ибо до завтро я ее точно не осилю, видимо слишком тяжело для меня изучение языка С. Вот решил обратиться к вам за помощью добрые люд, быть может для кого-то не составит труда решить следующею задачку: Дана матрица А(5,4) 1.Найти новый одномерный массив В из сумм эл-в каждой строки матрицы А. 2.Найти мах-й...
C++ Слова кончающееся на букву d нужно вывести все слова, которые кончаются на букву d int j,a,x;int i=0; char s,s1; cin.getline(s,255); while(s!='\0'){a=0; while(s==' ') i++;a=0; if(s!=' ') {while(s!=' ') {i++;a++; http://www.cyberforum.ru/cpp-beginners/thread394131.html
Цикл while, пару несложных вопросов C++
Есть у меня две блок-схемы по ним надо написать программу в первой у меня идёт цикл while, "если да" то выполняется два оператора присваивания, "если нет" то другой оператор присваивания Мне интересно как можно записать в цикле while "если нет"? "если да" я знаю например: while (a>b) { a=3b+c; // если да то вот два оператора 4b=6c; }
Работа с текстом. Подсчитать количество слов, имеющих удвоенные сочетания букв. C++
Подсчитать, сколько слов в тексте имеют удвоенные сочетания букв.(код без массивов) Иван Аганин, Правила2.3. Создавайте темы с осмысленными и понятными названиями - это серьезно повышает шансы, что на ваш вопрос ответят.Изначальное название темы: "работа с текстом".
C++ Шаблоны функций. http://www.cyberforum.ru/cpp-beginners/thread394098.html
Написать шаблон функции, осуществляющей обработку линейного массива. Тип и размер массива передаются как параметры шаблона ( <class T, int n>, где T – тип элементов линейного массива, а n – число его элементов). Задание: Заменить все четные по модулю числа средним арифметическим отрицательных элементов. На си ++. Добавлено через 5 часов 12 минут #include <iostream> #include <cstdlib> ...
C++ Программа на С Помогите написать программу на С подробнее

Показать сообщение отдельно
niXman
Эксперт C++
 Аватар для niXman
3133 / 1445 / 49
Регистрация: 09.08.2009
Сообщений: 3,441
Записей в блоге: 2
28.11.2011, 21:44     Конфигурационный файл
в общем, вот, когда-то писал.
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
83
84
85
86
87
88
89
90
91
92
93
#include <string>
#include <fstream>
#include <algorithm>
#include <stdexcept>
 
/***************************************************************************/
 
struct config_file {
   struct variant {
      variant(const std::string& s)
         :str(s)
      {}
      /**  */
      template<typename T>
      T as() const {
         T result;
         std::stringstream ss(str);
         ss >> result;
         return result;
      }
      operator std::string () const { return str; }
   private:
      variant();
      std::string str;
   };
   /**  */
   config_file(const std::string& fn)
      :fname(fn)
   {
      std::ifstream file(fname);
      if ( !file ) {
         throw std::runtime_error("config file is not exists!");
      }
   }
   /**  */
   variant operator[] (const std::string& key) const {
      std::string temp, result;
      std::ifstream file(fname.c_str());
      if ( !file ) {
         throw std::invalid_argument("can`t open config file!");
      }
      while ( !file.eof() ) {
         std::getline(file, temp);
         if ( !temp.size() || temp[0] == '#' ) continue;
         if ( std::find(temp.begin(), temp.end(), '\r') != temp.end() ) {
            temp.erase(std::remove(temp.begin(), temp.end(), '\r'), temp.end());
         }
         if ( parse_string(result, key, temp) ) {
            break;
         }
      }
      if ( result.empty() ) {
         throw std::invalid_argument("value of string is empty for: " + key);
      }
      return result;
   }
private:
   bool parse_string(std::string& path, const std::string& key, const std::string& str) const {
      std::string::const_iterator it = std::search(str.begin(), str.end(), key.begin(), key.end());
      if ( it == str.end() ) return false;
 
      std::advance(it, key.length());
 
      while ( *it++ != '=' ) {}
      while ( *++it == ' ' ) {}
 
      path.assign(it, str.end());
#ifndef WIN32
      if ( path[0] == '~' ) {
         path.erase(path.begin());
         path = getenv("HOME") + path;
      }
#endif
      return true;
   }
 
private:
   std::string fname;
};
 
/***************************************************************************/
 
int main() {
   try {
      config_file config("myconfig.conf");
      int iv = config["key_name"].as<int>();
      std::string sv = config["some_key_name"];
   } catch ( const std::exception& ex ) {
      // work with ex
   }
}
 
/***************************************************************************/
и в раздел новичков.

Добавлено через 5 минут
ах да. конфиг.файл должен соответствовать .conf синтаксису:
key_name=1234
some_key_name=some string
 
Текущее время: 02:02. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru