Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Для новичков > Чтение из файла


Автор: Recev 18.5.2011, 16:11
Нужно с помощью fstream прочитать из файла дроби.
Файл будет такого вида:
Цитата

2/3 + 4/5 * 3/2 =

Нужно прочитать дроби и операторы.

Автор: triclosan 18.5.2011, 16:13
getline потом парсить

Автор: Recev 18.5.2011, 17:52
Как пользоваться getline?
Пробовал так, не работает:
Код

    ifstream fl("F:\fl.txt", ios::in);
    char ch;
    getline(fl, ch);

Автор: Alca 18.5.2011, 17:56
Код

ifstream fl("F:/fl.txt", ios::in);


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

ifstream fl("F:\\fl.txt", ios::in);


Добавлено через 2 минуты и 29 секунд
http://www.cplusplus.com/reference/iostream/ifstream/open/

Автор: Recev 18.5.2011, 18:00
Ругается на getline
Цитата

[BCC32 Error] File1.cpp(14): E2268 Call to undefined function 'getline'
  Full parser context
    File1.cpp(11): parsing: void main()

Автор: Alca 18.5.2011, 18:13
Код

std::getline

Автор: Recev 18.5.2011, 18:16
Я с Borland C++ компилирую.

Автор: Alca 18.5.2011, 19:03
и что?

Автор: Recev 18.5.2011, 20:16
Не работает этот код вообще.

Вот помогите исправить код, который просто читает из файла несколько значений:
Код

void main()
{
int x, y;
char cr;
    ifstream fl("F:\fl.txt");
    fl >> x >> right >> cr >> right >> y;
    cout << x << "  " << y << "  " << cr << endl;
    getch();
}


Файл:
Цитата

43 ttf 29

Автор: Modul 18.5.2011, 22:32
Читает строки:

Код

#include <iostream>
#include <fstream>


int main()
{
            
    std::ifstream bis("C:\\file1.txt", std::ios::in);
    char *buf;
    
    while(!bis.eof())
    {        
        buf = new char[32];
        
        bis.getline(buf, 32, '\n');
        
        std::cout << buf << std::endl;

        delete[] buf;
     }
    

    bis.close();

    return 0;
}

Автор: triclosan 18.5.2011, 22:35
Цитата(Modul @  18.5.2011,  22:32 Найти цитируемый пост)
 buf = new char[32];

почему не char buf[32] конкретная цель приследуется использовнием динамики ?


Автор: Modul 18.5.2011, 22:45
Просто для примерчика.

Автор: borisbn 19.5.2011, 00:38
Цитата(Recev @  18.5.2011,  20:16 Найти цитируемый пост)
Не работает этот код вообще.

Цитата(Recev @  18.5.2011,  20:16 Найти цитируемый пост)
ifstream fl("F:\fl.txt");

тебе ж Alca говорил
Цитата(Alca @  18.5.2011,  17:56 Найти цитируемый пост)

fstream fl("F:/fl.txt", ios::in);
или
ifstream fl("F:\\fl.txt", ios::in);


Автор: Recev 23.5.2011, 18:55
А как мне сделать такой цикл, что-бы программа записывала в n* массив числительные, знаменательные и операцию?
Например:
2/3 + 6/8 + 4/5 * 4/9 =
Сначала прочитало 2/3 + 6/8 +, а затем 4/5 * 4/9 =.
Длина файла может изменятся.


Код

        const n = 10;
        char cr1, cr2;
    ifstream fl("F:\\fl.txt");
        int ch[n], znam[n];
        for (int i = 0; i < n; i++)
        {
         fl >> ch[i] >> cr1 >> zn[i] >> cr2; // значения прочли, теперь их наверное надо удалить из файла? или как?
         
        }
    


Автор: Recev 28.5.2011, 08:46
Ап
А если дроби будут без операторов, например так:
Цитата

2/3
5/9
1/2

как их прочесть?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)