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


Автор: TGrey 3.3.2008, 23:22
Добрый день.
Хочу узнать, как можно осуществить мой коварный план по уничтожению земли...
К примеру у меня есть файл, а нем записи типо
Код

1)текст...........................................
..........................
............................
.............................[color=red];[/color]

2)текст..............................
....................................
..................................
.....................................
...............................[color=red];[/color]

3)тескт................[color=red];[/color]

И мне нужно для начала найти все цифры(1,2,3), а после случайно вывести текст цифры, что выпадет. Но я почитал книжку, но так и непонял, как доставать из файла нужный мне текст и только.
Пожалуйста пример. Меня интерисует только часть, где достается текст.
Спасибо!

Автор: bsa 4.3.2008, 00:50
Требуемый язык программирования не очень понятен из вопроса.
C++
Код
#include <fstream>
#include <string>
#include <iostream>
int main()
{
     std::string text;
     std::ifstream file("file.txt");
     while(file.good()) { //пока файл не закончится...
          std::getline(file, text); //читаем из файла в переменную text очередную строку
          std::cout << text << '\n'; //выводим в стандартный вывод
     }
     return 0;
}
Си:
Код
#include <stdio.h>
int main(int argc, char *argv[])
{
      char text[1024];
      FILE *file = fopen("file.txt", "rt");
      if (file != NULL) {
           while( !feof(file) ) { /*пока файл не закончился... */
                 fgets(text, sizeof(text), file);  /* читаем в массив text очередную сроку, но не более, чем может поместиться в массив */
                 fputs(text, stdout); /* выводим в стандарный вывод */
           }
           fclose(file); /*закрываем файл */
      }
      return 0;
}

Автор: Craft 4.3.2008, 01:27
Насколько я тебя понял то тебе покатит чтото наподобие этого. Сразу предупреждаю код компилировал поб C++Builder так что могут быть ошибки. У меня компилиться. 
Код

#include<iostream.h>
#include<conio.h>
#include<string.h>
#include<fstream.h>
#include<stdlib.h>
int main()
{
       clrscr();
        string slovo="";
        string stroka_proverku="";
        cout<<"Vveditj neveluke slovo dlja powyky jogo iz fajla: ";
        scanf("%s",slovo);
        ifstream inFileF("F.txt",ios::in);
        if(!inFileF)
                {
                cerr<<"File could not be opened"<<endl;
                exit(1);
                }
        string powyk="";
        int i=0;
        while(inFileF>>powyk)
                {
                for(int i=0;i<=strlen(slovo.c_str());i++)
                        {
                        int position=powyk.find(slovo[i]);
                        if(position!=string::npos)
                                {
                                printf("%s",slovo);
                                printf("%s",powyk);//вывод твоей строки только учти что надо поставить условие 
                                //чтоб искало до  символа который значит переход на новою строку.
                                cout<<endl;
                                }
                        }
                }
        getch();
        return 0;
}

Автор: TGrey 4.3.2008, 11:59
Спасибо. Я тут пробовал, пробовал и в итоге, что-то похожее получилось, но как всегда не без проблем.
Сейчас читает из файла, но не видит пробелы, тоесть выводит текст без пробелов. Как можно поправить?
Код

ifstream qs2("Questions.oxk");

while(qs2.good())
{
        qs2>>test;
        if(test!=';')
                if(test==' ' || test=='\0')
                        Label2->Caption=Label2->Caption + " " + test;
                else
                        re->Text = re->Text + test;
                        //Label2->Caption=Label2->Caption + test;
        else
                break;
}


это делал в билдере.

Автор: Craft 4.3.2008, 21:37
Логично что не выводит пробелы. У тебя из файла извлекается текст без пробелов. У своем коде поменяй 
Код

ifstream qs2("Questions.oxk");

while(qs2.good())
{
        qs2>>test;
        if(test!=';')
                if(test==' ' || test=='\0')
                        Label2->Caption=Label2->Caption + " " + test;//Никогда код не выполниться
                else
                        re->Text = re->Text +" "+ test;//Здесь добавь " " то текст будет с пробелами
                        //Label2->Caption=Label2->Caption + test;
        else
                break;

}

Это если у тебя строка re->Text тыпа string. Зделай пошаговою отладку в C++Builder и сам увидиш.

Автор: bsa 5.3.2008, 15:33
operator>>() читает символы отличные от разделителей. Именно поэтому я использовал getline.

Автор: TGrey 5.3.2008, 19:27
Но так тогда везде будут пробелы?! В файле текст
(1)Hello how are you?;

Подобные слова, но когда оно его выводит то выводит все вместе. Мне тогда тоже getline воспользоватся попробовать?!

Автор: bsa 5.3.2008, 20:10
Цитата(TGrey @ 5.3.2008,  19:27)
Но так тогда везде будут пробелы?! В файле текст
(1)Hello how are you?;

Подобные слова, но когда оно его выводит то выводит все вместе. Мне тогда тоже getline воспользоватся попробовать?!

Тебе решать. Каждая функция для своих целей.

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