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

С++ класс и чтение из файла - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Преобразование указателя из char в int и double http://www.cyberforum.ru/cpp-beginners/thread856479.html
указатель sadr является типом char мне нужно перопределить его на типы на int и double int a; double b; void cr(char **sadr) { *(*wtadr) = a;//если буду так делать запишет только один байт *(*wtadr) = b;//здесь тоже только один байт }
C++ Переписка с Бейсика в С++ Помогите переписать два кода с Бейсика в С++ Зарание спасибо :) 1. 15 Private Sub Command1_Click() Dim X(12) As Single, T(12) As Single Dim A!, S!, P! Dim i%, st1 As String, st2 As String Randomize (Timer) http://www.cyberforum.ru/cpp-beginners/thread856477.html
C++ Сколько штатов в государстве (перевод с С на С++)
#include <stdio.h> #define CITY_MAX 100 #define ROAD_MAX 1000 struct road { int city1; int city2; }; struct roadto {
Про звук C++
Не знаю, в какую тему обращаться, поэтому написал сюда. В общем, мне потребовалась какая-нибудь библиотека для работы со звуком. Требования примерно такие: умение убрать шум, склеить в один файл несколько файлов (сэмплов), ну и вообще в целом обработать звук. Читал про BASS... может ли она такое осуществить и какие есть вообще варианты?
C++ Класс в классе http://www.cyberforum.ru/cpp-beginners/thread856455.html
Здравстуйте. При создании базы данных столкнулся со следующей проблемой - не знаю как определить класс внутри класса. А именно скажите в чем здесь ошибка class student{ public: char* name; int length; private: //... } class group{ public:
C++ Работа со стеком. Программа, которая к вершине стека добавляет некоторое число, а следующему элементу присваивает значение предыдущего Есть некоторый стек, в каждом элементе которого записаны по два целых числа. Нужно сделать программу которая к вершине стека добавляет некоторое число, а следующему элементу присваивает значение предыдущего. Например в нашем стеке хранится >>>, если мы добавляем например 1 и 4, то результат должен быть >>>, то есть меняется лишь первый элемент стека, а остальные просто переписываются.... подробнее

Показать сообщение отдельно
lemegeton
2918 / 1347 / 134
Регистрация: 29.11.2010
Сообщений: 2,721
05.05.2013, 16:42     С++ класс и чтение из файла
Цитата Сообщение от StaR0sTa Посмотреть сообщение
вы изменили мой класс до неузнаваемости=) Я просто только учусь.
Да учитесь ради Б-га. Для того и стараемся.

Цитата Сообщение от StaR0sTa Посмотреть сообщение
Проще присвоить явно значения, чтобы вызвался конструктор..и никаких проблем=)
Это называется неизменяемыми объектами (immutable). Есть такая хорошая практика -- делать небольшие объекты неизменяемыми. Тогда с ними гораздо удобнее работать, зная, что их свойства не изменятся в процессе работы. У этой техники есть и недостатки -- например, увеличивается объем памяти, необходимой для работы. Но, как известно, стоимость разработки превыше любых технических требований результата.

Кликните здесь для просмотра всего текста
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
#include <fstream>
#include <iostream>
#include <iomanip>
 
class CAir {
 public:
  CAir() {}
  CAir(double r0, double length, double th) : r0(r0), length(length),
    th(th) {}
  double getR0() const { return r0; }
  double getLength() const { return length; }
  double getTh() const { return th; }
 private:
  double r0, length, th;
};
 
std::ostream &operator<<(std::ostream &stream, const CAir &cair) {
  return stream << "CAir{" <<
    std::fixed << std::setprecision(3) <<
    "r0=" << cair.getR0() << "," <<
    "length=" << cair.getLength() << "," <<
    "th=" << cair.getTh() << "}";    
}
 
std::ostream &operator<<(std::ofstream &stream, const CAir &cair) {
  return stream << cair.getR0() << " " << cair.getLength() << " " <<
    cair.getTh();
}
 
std::istream &operator>>(std::ifstream &stream, CAir &cair) {
  double r0, length, th;
  stream >> r0 >> length >> th;
  cair = CAir(r0, length, th);
  return stream;
}
 
int main(int argc, char *argv[]) {
  CAir cair(0.23, 0.32, 1.17);
  std::cout << cair << std::endl;
 
  std::ofstream out("tutor5020.txt");
  out << cair;
  out.close();
 
  std::ifstream in("tutor5020.txt");
  in >> cair;
  in.close();
  
  std::cout << cair << std::endl;
  return 0;
}


Цитата Сообщение от StaR0sTa Посмотреть сообщение
Ещё один вопрос..если в файле находится больше значений, чем 3..
Смотря в чем суть вопроса. Если суть в том, как увеличить количество переменных класса, то с эта модификация должна лечь на плечи операторов ввода-вывода.

Кликните здесь для просмотра всего текста
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
#include <fstream>
#include <iostream>
#include <iomanip>
 
class CAir {
 public:
  CAir() {}
  CAir(double r0, double length, double th, double a) : r0(r0), length(length),
    th(th), a(a) {}
  double getR0() const { return r0; }
  double getLength() const { return length; }
  double getTh() const { return th; }
  double getA() const { return a; }
 private:
  double r0, length, th, a;
};
 
std::ostream &operator<<(std::ostream &stream, const CAir &cair) {
  return stream << "CAir{" <<
    std::fixed << std::setprecision(3) <<
    "r0=" << cair.getR0() << "," <<
    "length=" << cair.getLength() << "," <<
    "th=" << cair.getTh() << "," <<
    "a=" << cair.getA() << "}";
}
 
std::ostream &operator<<(std::ofstream &stream, const CAir &cair) {
  return stream << cair.getR0() << " " << cair.getLength() << " " <<
    cair.getTh() << " " << cair.getA() << " ";
}
 
std::istream &operator>>(std::ifstream &stream, CAir &cair) {
  double r0, length, th, a;
  stream >> r0 >> length >> th >> a;
  cair = CAir(r0, length, th, a);
  return stream;
}
 
int main(int argc, char *argv[]) {
  CAir cair(0.23, 0.32, 1.17, 2.15);
  std::cout << cair << std::endl;
 
  std::ofstream out("tutor5020.txt");
  out << cair;
  out.close();
 
  std::ifstream in("tutor5020.txt");
  in >> cair;
  in.close();
  
  std::cout << cair << std::endl;
  return 0;
}


Добавлено через 5 минут
Цитата Сообщение от StaR0sTa Посмотреть сообщение
Он первые три присвоит объекту, а все остальные значения переменным по порядку?
Да.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru