Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Чтение символов из файла, Найти и вывести слово 
:(
    Опции темы
in550
  Дата 23.5.2007, 11:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Awaiting Authorisation
Сообщений: 11
Регистрация: 16.1.2007

Репутация: нет
Всего: нет



Здравствуйте!

Как можно из текстового файла считать строку Привет, как дела
и вывести в терминал.

Файл следующего содержания:
Код


Он сказал "Привет, как дела" и пошел дальше.


Нужно вывести только Привет, как дела. Как выводить до или после символов
я знаю, а вот как только от кавычки и до другой кавычки (без API) и максимально
просто, я не смог. Т.е. только GNU C++ под Win и Linux.

Помогите.

Это сообщение отредактировал(а) in550 - 23.5.2007, 11:57
PM MAIL   Вверх
beowulf
Дата 23.5.2007, 12:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 56
Регистрация: 20.3.2006

Репутация: нет
Всего: 1



Пардон за офтоп, тороплюсь
Короче создал на Дельфи ActiveX-компонент, у себя дома установил, а в универе на серваке нимагу. Дельфи на том компу не 
устанавливается. ИИС там есть. Как установить активную форму? 

PM MAIL WWW YIM   Вверх
FiMa1
Дата 23.5.2007, 12:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 408
Регистрация: 23.9.2006

Репутация: 5
Всего: 6



Цитата(in550 @ 23.5.2007,  11:56)
Как выводить до или после символов я знаю, а вот как только от кавычки и до другой кавычки...

Имхо, логично ловить вхождение первой пары кавычек. По их обнаружении, ПОКА не встречена следующая пара кавычек накапливаем строку между кавычками в буфер, после чего (когда встретили вторую пару кавычек) выкидываем накопленный в буфер результат на терминал.
Идея ясна? Попробуй решить сам.
PM   Вверх
in550
Дата 23.5.2007, 12:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Awaiting Authorisation
Сообщений: 11
Регистрация: 16.1.2007

Репутация: нет
Всего: нет



Не. чтото не лезит камянная чаша.  smile 
PM MAIL   Вверх
FiMa1
Дата 23.5.2007, 12:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 408
Регистрация: 23.9.2006

Репутация: 5
Всего: 6



Цитата(in550 @ 23.5.2007,  12:27)
Не. чтото не лезит камянная чаша.  smile

Ок, набросал вариантик. Попробуй разобраться.
Код
#include <iostream>
#include <fstream>
using namespace std;

int main()
{
    char *fname = "file", str[30], ch;
    int i = 0;

    ifstream in( fname );
    if( in.fail() )
    {
        cout << "Can't open the file" << fname <<  endl;
        return 1;
    }

    //найти первую пару кавычек
    do {
        in.get( ch );
    } while( ch != '"' ) ;

    in.get( ch );
    //ПОКА не найдена вторая пара кавычек
    while ( ch != '"' ) {
        str[i++] = ch;//копить строку в буфер
        in.get( ch );
    }
    str[i] = '\0';//принудительное завершение строки

    return 0;
}


Это сообщение отредактировал(а) FiMa1 - 23.5.2007, 12:51
PM   Вверх
Rockie
Дата 23.5.2007, 12:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1143
Регистрация: 23.4.2006

Репутация: 8
Всего: 31



Цитата(in550 @  23.5.2007,  11:56 Найти цитируемый пост)
 Как выводить до или после символов
я знаю, а вот как только от кавычки и до другой кавычки (без API) и максимально
просто, я не смог. Т.е. только GNU C++ под Win и Linux.


in550, юзай getline до кавычки дважды. первый раз считываешь 
Цитата
Он сказал 
, а второй раз уже то, что надо: 
Цитата

Привет, как дела

Код

#include <iostream>
#include <fstream>
#include <string>

using namespace std;

int main()    
{    
    string s;    
    ifstream f("text.txt");    
    
    getline(f,s,'"');    
    getline(f,s,'"');    

    puts(s.c_str());

    return 0;
}





--------------------
Чтобы иметь большой гардероб - надо иметь большой гардероб.
PM   Вверх
in550
  Дата 23.5.2007, 13:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Awaiting Authorisation
Сообщений: 11
Регистрация: 16.1.2007

Репутация: нет
Всего: нет



Спасибо! Разобрался!  smile 
PM MAIL   Вверх
Xenon
Дата 23.5.2007, 14:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1529
Регистрация: 12.4.2006

Репутация: 11
Всего: 50



Код

#include <iostream>
#include <string>
#include <vector>
#include <sstream>
#include <algorithm>

template <typename T> void display(T& obj)
{
    std::cout << obj << ' ';
}
int main(int argc, char* argv[])
{
    std::string str = "And he said: \"Yo nigga\" and dreams came true";
    std::vector<std::string> arr;
    std::stringstream str_stream(str);
    while (str_stream)
    {
        std::string buf;
        std::getline(str_stream, buf, '"');
        buf.clear();
        std::getline(str_stream, buf, '"');
        if ( buf.size() ) arr.push_back(buf);
    }
    std::for_each(arr.begin(), arr.end(), display<std::string> );
    std::cin.sync();
    std::cin.get();
    return 0;
}


А, ну по-сути Rockie уже выложил решение


--------------------
user posted image  
PM MAIL   Вверх
Xenon
Дата 23.5.2007, 14:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1529
Регистрация: 12.4.2006

Репутация: 11
Всего: 50



Ну с файлом аналогично
Код

#include <iostream>
#include <string>
#include <vector>
#include <fstream>
#include <sstream>
#include <algorithm>

template <typename T> void display(T& obj)
{
    std::cout << obj << ' ';
}
int main(int argc, char* argv[])
{
    std::ifstream file ("..");
    std::vector<std::string> arr;
    while (true)
    {
        std::string buf;
        std::getline(file, buf, '"');
        buf.clear();
        std::getline(file, buf, '"');
        if ( file.fail() ) break;
        if ( buf.size() ) arr.push_back(buf);
    }
    std::for_each(arr.begin(), arr.end(), display<std::string> );
    std::cin.sync();
    std::cin.get();
    return 0;
}



--------------------
user posted image  
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1106 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.