Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Moiu
0 / 0 / 0
Регистрация: 01.04.2011
Сообщений: 3
#1

Потоки - C++

01.04.2011, 18:51. Просмотров 769. Ответов 7
Метки нет (Все метки)

В процессе выполнения задачи возникла проблема чтения объектов из потока и сохранения их в массив:
cout << "Rasstojanie = " << xx <<endl;
еще была попытка сделать так:
infile>>dist
но читает только последние введенные значения и нужно делать все равно через массив,
также интересует вопрос добавления, удаления и замены объектов в потоке.
Всем большое спасибо за участие=)
Код
#include "stdafx.h"
#include <fstream>
#include <iostream>
#include <string>
#include <conio.h>
using namespace std;

class Distance            
  {
  private:
    int feet;
    float inches;
  public:
    Distance() : feet(0), inches(0.0) 
                                      
      {  }                
    Distance(int ft, float in) : feet(ft), inches(in)    
      {  }
    friend ifstream& operator >> (ifstream& s, Distance& d);
	friend istream& operator >> (istream& s, Distance& d);
    friend ostream& operator << (ostream& s, Distance& d);
  };
//---------------------------------------------------------
ifstream& operator >> (ifstream& s, Distance& d) 
                                               
  {                       
  char dummy[10];                              
  s >> d.feet >>  d.inches;
  return s;
  }

istream& operator >> (istream& s, Distance& d) 
                                               
  {                            
                          
  s >> d.feet >> d.inches;
  return s;
  }


//---------------------------------------------------------
ostream& operator << (ostream& s, Distance& d) 
                         
  {                       
  s << d.feet << "\-" << d.inches ;   
  return s;               
}
///////////////////////////////////////////////////////////
int main()
  {
  char ch;
  Distance dist1;
  fstream outfile("1.DAT",ios::out);
  ofstream ofile;         // создать и открыть
  ofile.open("1.DAT"); // выходной поток

  do {
    cout << "\nVvedite rasstojanie: ";
    cin >> dist1;         // получить данные от пользователя
	cout<<"xxx"<<dist1<<"/xxx"<<endl;
    outfile << dist1<<endl;       // записать их в выходной поток
    cout << "Prodolzhat (y/n)? ";
    cin >> ch;
    } while(ch != 'n');  
  outfile.close();          // закрыть выходной поток
  
  ifstream infile("1.DAT");
  infile.open("1.DAT",std::ios_base::in);
 
 
  cout << "\nSoderzhimoe faila:\n";
   infile.seekg(0,ios::beg);
  while(!infile.eof())
{
  char xx[15];
  infile>>xx;
  cout << "Rasstojanie = " << xx <<endl;
  
  getch();
}
  return 0;
  }
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.04.2011, 18:51
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Потоки (C++):

Что такое потоки ввода, потоки вывода? - C++
Здарова всем! Не так давно уже прогаю на С++ и все НИКАК не могу понять, что такое потоки ввода, потоки вывода..! вот допустим...

Потоки - C++
Помогите,пожалуйста!Написать программу, которая считывает текст из файла и выводит на экран только предложения, начинающиеся с тире, перед...

Потоки - C++
Задание: 1.Отображение списка запущенных потоков. 2.Создание нового потока по запросу пользователя.(это у меня сделано и работает) ...

Потоки с++ - C++
Как средствами с++ реализовать параллельную работу с документами? Т.е. чтобы можно было одновременно работать с несколькими файлами (искать...

потоки.. - C++
Доброго всем времени суток. При написании программы я столкнулся с проблемой, решение которой, по словам друзей, лежит в потоках. проблема...

Потоки - C++
Я создаю поток так: CreateThread(NULL, 0, MyThread, (LPVOID)&amp;param, 0, NULL); Но мне нужно обработать 100 раз функцию MyThread. 100...

7
Deviaphan
Делаю внезапно и красиво
Эксперт С++
1306 / 1221 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
01.04.2011, 19:23 #2
Зачем две функции? Достаточно одной с istream.
C++
1
2
    friend ifstream& operator >> (ifstream& s, Distance& d);
        friend istream& operator >> (istream& s, Distance& d);
Добавлено через 4 минуты
Что либо заменить или удалить в потоке нельзя. Вы путаете понятия файла и потока. Это очень разные понятия. Вы можете только писать в поток и читать из потока.
Способ замены и удаления данных в файле зависит от его внутренней структуры. В общем случае, достаточно создать новый файл с обновлённым содержимым.

Добавлено через 1 минуту
Формат чтения и формат записи различаются. Следовательно, чтение невозможно.

Добавлено через 1 минуту
conio.h - не нужен
0
Moiu
0 / 0 / 0
Регистрация: 01.04.2011
Сообщений: 3
01.04.2011, 19:31  [ТС] #3
Цитата Сообщение от Deviaphan Посмотреть сообщение
Зачем две функции? Достаточно одной с istream.
C++
1
2
    friend ifstream& operator >> (ifstream& s, Distance& d);
        friend istream& operator >> (istream& s, Distance& d);
Добавлено через 4 минуты
Что либо заменить или удалить в потоке нельзя. Вы путаете понятия файла и потока. Это очень разные понятия. Вы можете только писать в поток и читать из потока.
Способ замены и удаления данных в файле зависит от его внутренней структуры. В общем случае, достаточно создать новый файл с обновлённым содержимым.

Добавлено через 1 минуту
Формат чтения и формат записи различаются. Следовательно, чтение невозможно.

Добавлено через 1 минуту
conio.h - не нужен
Две функции, потому что с одной у меня не работает, если прописать cout внутри функции ifstream, то можно будет наверняка увидеть, что работает она

Я имею ввиду удаление, добавление и замена объектов в файле.
Кто вам сказал, что чтение невозможно? Чтение происходит,если подставить dist1, но читает только последние введенное значение.
conio.h у меня используется для getch()
0
Deviaphan
Делаю внезапно и красиво
Эксперт С++
1306 / 1221 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
01.04.2011, 19:39 #4
Цитата Сообщение от Moiu Посмотреть сообщение
getch()
cin.getch();

Добавлено через 54 секунды
Цитата Сообщение от Moiu Посмотреть сообщение
s << d.feet << "\-" << d.inches ;
Цитата Сообщение от Moiu Посмотреть сообщение
s >> d.feet >> d.inches;
Поэтому невозможно. Во входном потоке есть "\-", при чтении это не учитывается.
0
asics
Freelance
Эксперт С++
2853 / 1788 / 144
Регистрация: 09.09.2010
Сообщений: 3,841
01.04.2011, 19:41 #5
Цитата Сообщение от Deviaphan Посмотреть сообщение
cin.getch();
Разве не cin.get() ?
0
Deviaphan
Делаю внезапно и красиво
Эксперт С++
1306 / 1221 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
01.04.2011, 19:42 #6
Цитата Сообщение от Moiu Посмотреть сообщение
потому что с одной у меня не работает
По правилу перегрузки вызывается первая более подходящая функция. Для файлового ввода всегда будет вызываться первая функция. Если её закомментировать, будет вызываться более общая с istream.

Добавлено через 30 секунд
Цитата Сообщение от asics Посмотреть сообщение
Разве не cin.get() ?
Не помню.))) Факт - можно обойтись без conio.h.)
0
Moiu
0 / 0 / 0
Регистрация: 01.04.2011
Сообщений: 3
01.04.2011, 19:46  [ТС] #7
Цитата Сообщение от Deviaphan Посмотреть сообщение
cin.getch();

Добавлено через 54 секунды


Поэтому невозможно. Во входном потоке есть "\-", при чтении это не учитывается.
У меня работало и так.

Цитата Сообщение от Deviaphan Посмотреть сообщение
По правилу перегрузки вызывается первая более подходящая функция. Для файлового ввода всегда будет вызываться первая функция. Если её закомментировать, будет вызываться более общая с istream.

Добавлено через 30 секунд

Не помню.))) Факт - можно обойтись без conio.h.)
Я Вам еще раз повторяю, что если закомментировать то, что вы предлагаете, прога не запуститься.
0
Deviaphan
Делаю внезапно и красиво
Эксперт С++
1306 / 1221 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
01.04.2011, 19:49 #8
Цитата Сообщение от Moiu Посмотреть сообщение
У меня работало и так
Чудяса

Цитата Сообщение от Moiu Посмотреть сообщение
если закомментировать то, что вы предлагаете, прога не запуститься
Чудяса
0
01.04.2011, 19:49
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.04.2011, 19:49
Привет! Вот еще темы с ответами:

потоки с++ - C++
добрый вечер !нужно проверить мою программу с потоками. переделала, но что-то не так( закомменченная программа, моя на основе которой...

Потоки - C++
Программа порождает два потока, один генерирует матрицу, которая через именованный канал передаётся другому потоку, выводящему её на экран....

Потоки - C++
Здравствуйте, помогите пожалуйста преподаватель сказал нужно добавить код в третьем потоке(thread3), чтобы событие не происходила пока не...

Потоки - C++
Как передать параметры потоку, если я его вызываю с помощью _beginthread


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.