С++.Работа с файлами. Текстовый файл.

Тема в разделе "C/C++/C#", создана пользователем -, 26 дек 2010.

  1. Гость

    С использованием классов обязательно .Имеется текстовый файл. Напечатать.
    а)его первую строчку.
    б)его пятую строчку.
    в)его первые пять строк.
    г)его строки с s1 по s2.
    д)весь файл.

    работу с файлами вообще не одупляю. Просьба кто может напишите простую и понятную прогу хоть под а) дальше думаю по подобию разберусь.
     
  2. Rififi

    Rififi Гость

    Код (C++):
    #include <string>
    #include <algorithm>
    #include <functional>
    #include <locale>

    #include <iostream>
    #include <fstream>
    #include <iterator>
    #include <sstream>

    /*
    С использованием классов обязательно .Имеется текстовый файл. Напечатать.
    а)его первую строчку.
    б)его пятую строчку.
    в)его первые пять строк.
    г)его строки с s1 по s2.
    д)весь файл.
    */


    struct file_printer
    {
    file_printer(std::istream& is) : is_(is) {}

    void print(size_t from, size_t length) const
    {
    is_.seekg(0, std::ios_base::beg);

    std::string s;
    for (size_t i=0; i<from; i++)
    if (!std::getline(is_, s))
    return;

    size_t i = 0;
    do
    {
    std::cout << "Line #" << (i+1) << ": " << s << std::endl;
    i++;
    } while (i < length && std::getline(is_, s));

    std::cout << std::endl;
    }

    std::istream& is_;
    };

    int main()
    {
    setlocale(LC_ALL, "");

    std::ifstream ifs("lines.txt");
    if (!ifs)
    return 0;

    const file_printer fp(ifs);

    fp.print(1, 1);
    fp.print(5, 1);

    fp.print(1, 5);

    const size_t s1 = 6;
    const size_t count = 4;
    fp.print(s1, count);

    return 0;
    }
    программа читает строки из файла lines.txt
    если в нём содержится, например, это:

    строка 1
    строка 2
    строка 3
    строка 4
    строка 5
    строка 6
    строка 7
    строка 8
    строка 9
    строка 10
    строка 11


    то вывод будет таким:

    Код (Text):
    Line #1: строка 1

    Line #1: строка 5

    Line #1: строка 1
    Line #2: строка 2
    Line #3: строка 3
    Line #4: строка 4
    Line #5: строка 5

    Line #1: строка 6
    Line #2: строка 7
    Line #3: строка 8
    Line #4: строка 9
     
  3. Гость

    Благодарю ))))
     
  4. Гость

    Но если честн отедьные строки понятны отдельные нет.
    Общими силами написали программу но почему то выскакивают ошибки в Майкрософт Вижуал

    Не подскажете уважаемый Rififi что не так B)

    // 15.16.cpp: определяет точку входа для консольного приложения.
    //

    Код (Text):
    #include "stdafx.h"
    #include <cstdlib>
    #include <iostream>
    #include <fstream>
    #include <cstring>
    #define n 10;
    using namespace std;
    class file
    {public:
    void open()
    {char s[n];
    int i;
    ifstream f;
    f.open("D:\\15.16\\temp.txt");
    if(f);
    for(i=0;i<n;i++)
    {f>>s[i];}
    {
    cout<<"a)"<<endl;
    cout<<s[0]<<endl;
    }

    {
    cout<<"b)"<<endl;
    cout<<s[4]<<endl;
    }

    {
    cout<<"v)"<<endl;
    for(i=0;i<5;i++)
    {
    cout<<s[i]<<endl;
    }
    }

    {
    cout<<"g)"<<endl;
    cout<<"Vvedite c kakoj stroki pe4atat S1=";
    int s1;
    cin>>s1;
    cout<<endl;

    cout<<"Vvedite do kakoj stroki pe4atat S2=";
    int s2;
    cin>>s2;
    cout<<endl;


    for(s1;s1<s1;s1++)
    {
    cout<<s[s1]<<endl;
    }
    }

    {
    cout<<"d)"<<endl;
    for(i=0;i<n;i++)
    {
    cout<<s[i]<<endl;
    }
    }
    f.close();
    }

    }st;


    int _tmain(int argc, _TCHAR* argv[])
    {
    st.open;
    system("PAUSE");
    return 0;
    }
     
  5. Rififi

    Rififi Гость

    АМ101

    твоя прога слишком помойно оформлена, глаза прямо ломает, и рука сама ищет кнопку DEL
    Приведи её в божеский вид, как у меня в посте.
     
  6. Гость

    Уважаемый Rififi, отредактировал B)
     
  7. Rififi

    Rififi Гость

    АМ101

    #define n 10;

    точку с запятой ставить нельзя

    if(f);
    for(i=0;i<n;i++)

    оператор if ничего не делает

    for(s1;s1<s1;s1++)

    условие в цикле бредовое

    это что сразу заметно.

    ну и самое главное - прога в корне неверна, поскольку по заданию нужно считывать строки, а вот здесь у тебя читаются символы:

    {f>>s;}
     
  8. Гость

     
  9. Гость

    у менятакое ошущение что ошибка идентификатор string :ya_lamo: , не подсвечивается синим как int или char , а горит черным. Может его надо заменить другим типом ? или string не может быть массивом?

    Код (C++):
    // 15.15ы.cpp: определяет точку входа для консольного приложения.
    //
    #include "stdafx.h"
    #include <cstdlib>
    #include <iostream>
    #include <fstream>
    #include <cstring>
    #define n 10
    using namespace std;
    class file
    {public:
    void open()
    {string s[n]; /*у менятакое ошущение что ошибка тут вопрос идентификатор string не подсвечивается синим как int или char , а горит черным. Может его надо заменить другим типом ? или string не может быть массивом??????*/
    int i;
    ifstream f;
    f.open("D:\\15.16\\temp.txt");
    //if(f);
    //for(i=0;i<n;i++)
    //{f>>s[i];}
    {
    cout<<"a)"<<endl;
    cout<<s[0]<<endl;
    }

    {
    cout<<"b)"<<endl;
    cout<<s[4]<<endl;
    }

    {
    cout<<"v)"<<endl;
    for(i=0;i<5;i++)
    {
    cout<<s[i]<<endl;
    }
    }

    {
    cout<<"g)"<<endl;
    cout<<"Vvedite c kakoj stroki pe4atat S1=";
    int s1;
    cin>>s1;
    cout<<endl;

    cout<<"Vvedite do kakoj stroki pe4atat S2=";
    int s2;
    cin>>s2;
    cout<<endl;


    for(int i=s1;i<s2;s1++)
    {
    cout<<s[s1]<<endl;
    }
    }

    {
    cout<<"d)"<<endl;
    for(i=0;i<n;i++)
    {
    cout<<s[i]<<endl;
    }
    }
    f.close();
    }

    }st;


    int _tmain(int argc, _TCHAR* argv[])
    {
    st.open;
    system("PAUSE");
    return 0;
    }

    int _tmain(int argc, _TCHAR* argv[])
    {
    return 0;
    }
     
Загрузка...
Похожие Темы - С++ Работа файлами
  1. Евгений21
    Ответов:
    1
    Просмотров:
    2.201
  2. 203
    Ответов:
    9
    Просмотров:
    2.927
  3. DarkVss
    Ответов:
    3
    Просмотров:
    1.915
  4. neprog
    Ответов:
    1
    Просмотров:
    1.256
  5. studentrtf
    Ответов:
    1
    Просмотров:
    1.570

Поделиться этой страницей