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

Считать информацию из файла в массив структур - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Помощь с функцией http://www.cyberforum.ru/cpp-beginners/thread704019.html
Нужно написать функцию, которая делает возможным приоритет операций для данной программы (т.е. использование скобок). Листинг: #include <iostream> #include <stdlib.h> #include <string.h> #include <cmath> using namespace std; const int MaxLength = 10;
C++ Ввод данных в объект string из потока Знаю что можно сделать так: #include <strstream> ... char str = ""; ostrstream ostr(str, sizeof(str)); ostr << 21; ostr << ":"; ostr << 15; ostr << ":"; ostr << 57; http://www.cyberforum.ru/cpp-beginners/thread703989.html
[Объектно-ориентированное программирование] Разработка основы класса C++
Доброго времени суток. Есть такое задание, не могу разобраться. Разработать структуру элементов данных класса в виде динамической структуры данных (динамический массив, список, массив указателей). Разработать: * конструкторы для различных типов входных данных (без параметров, параметр-строка, параметр-массив), конструктор копирования (объект из объекта) и деструктор; * методы вывода и ввода...
C++ интеграл(неопределенный)
Добрый вечер! не нашел подобной темы на форуме мне нужно посчитать неопределенный интеграл в С++ зада ча состоит в том что бы сгладить функцию ступеньки double F(double x_volna) { if ((0<=x_volna) && (x_volna<=0.5)) return 1; if (0.5<=x_volna)&& (x_volna<=1) return 0.0036; }
C++ Программа работает на Windows 7, но не работает на XP http://www.cyberforum.ru/cpp-beginners/thread703949.html
#include <locale> #include <windows.h> #include <iostream> #include <fstream> int main () { std::string wont; size_t i; size_t L; size_t result;
C++ В каком формате экспортировать модель персонажа со скелетом? Как это грузить в игру? В игре предполагается скелетная анимация, но не готовые движения, сохранённые в последовательные 3D кадры, а с расчётом кинематики в самой игре. Первая оскелеченная версия персонажа готова, шкура на ней затекстурена, веса сгенерены, группы назначены. Куда экспортировать и как потом грузить? Назовите, пожалуйста, формат и дайте ссылку на его описание, или само описание. Персонаж в блендере. подробнее

Показать сообщение отдельно
kotleta
 Аватар для kotleta
42 / 42 / 11
Регистрация: 13.09.2012
Сообщений: 196
21.11.2012, 11:16     Считать информацию из файла в массив структур
Здравствуйте!

Выполняю упражнение из книги Прата "С++ язык"
Суть в том, что нужно из файла считать определенное количество элементов (количество указано в самом начале файла), и записать эти элементы в каждый элемент структуры patron. А затем вывести все эти элементы.

Чтобы вам было проще разбираться. Файл file_69upr.txt, его содержимое
4
Sam Stone
2000
Freida Flass
100500
Tammy Tubbs
5000
Rich Raptor
55000
Код программы

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
#include <iostream>
#include <fstream>
#include <string>
 
using namespace std;
 
int main()
{
 ifstream f("file_69upr.txt");
 if(f.is_open() == false)
 {
     cout << "Couldn't open file";
 }
 
 struct patron
 {
  string name;
  int sum;
 };
 
 int count;
 f >> count;
 
 cout << count << endl;
 
 patron *M = new patron [count];
 
 for(int i = 0; i < count; i++)
 {
     getline(f,M[i].name);
     f >> M[i].sum;
 }
 
 for(int i = 0; i < count; i++)
 {
  cout << "name: " << M[i].name << " sum: " << M[i].sum << endl;
 }
 
 f.close();
 delete [] M;
 
 return 0;
}
Проблема в том, что вывод получается не таким какой нужен для решения задачи.

4
name: sum: 3226995
name: sum: 1313754953
name: sum: 1936617283
name: sum: 1953724755

Process returned 0 (0x0) execution time : 0.016 s
Press any key to continue.
А проблема в чем не понимаю.
Так как там имена, состоящие более чем из одного слова, то я использую функцию getline.
Но похоже в поле int считывается, то, что должно находится в строке, поэтому и получаются такие корявые цифры.

Не знаю что делать..

Добавлено через 3 минуты
C++
1
2
3
4
5
6
7
8
 f.get();
 
 for(int i = 0; i < count; i++)
 {
     getline(f,M[i].name);
     f >> M[i].sum;
     f.get();
 }
проблему решил

Добавлено через 1 минуту
Уважаемые адмитисрация!!
У вас форум глючит, почему-то когда я добавляю в исходное сообщение, оно не добавляется, а дублируется и добавляется к дублированному..

Добавлено через 16 минут
администрация
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 21:57. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru