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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как выделить слова из строки? 
V
    Опции темы
Kit0boy
Дата 21.11.2010, 19:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Есть файл, в котором каждая строка имеет вид "Фамилия - Иванов Имя - Иван Отчество - Иванович"
нужно, чтобы выводилось только Иванов Иван Иванович. Как это сделать без нагромождения циклов?(хотя если и так, то тоже спасибо)
PM MAIL   Вверх
Леопольд
Дата 21.11.2010, 23:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Kit0boy, нужно готовое решение?


--------------------
вопросов больше чем ответов
PM MAIL   Вверх
ИванМ
Дата 22.11.2010, 22:18 (ссылка) |   (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Kit0boy, легче всего через Boost::regex_search.

Добавлено через 3 минуты и 44 секунды
Если без boost'а и все строки имеют гарантированно такой вид, то просто через оператор >> читать строки, и записывать выборочно некоторые извлеченные слова.
PM MAIL   Вверх
sQu1rr
Дата 22.11.2010, 22:35 (ссылка) |   (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата

"Фамилия - Иванов Имя - Иван Отчество - Иванович"

Если не врешь, то
Код

// ifstream file
std::string sname, name, fname, temp;
file >> temp >> temp >> sname >> temp >> temp >> name >> temp >> temp >> fname;

Или както так. Но смысл понятен, это то что описал 
ИванМ, 
PM MAIL Skype GTalk   Вверх
Kit0boy
Дата 25.11.2010, 17:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Cпасибо. Только там произвольно имена задаются, то есть я изначально не знаю, что за имена. Пытаюсь через fputs fgets (чтобы с каждого второго пробела считывалось и до следующего) только с синтаксисом путаюсь.
PM MAIL   Вверх
sQu1rr
Дата 25.11.2010, 17:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(Kit0boy @  25.11.2010,  17:28 Найти цитируемый пост)
Пытаюсь через fputs fgets (чтобы с каждого второго пробела считывалось и до следующего) только с синтаксисом путаюсь. 

Чем не устраивает std::* ?
PM MAIL Skype GTalk   Вверх
Kit0boy
Дата 25.11.2010, 17:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



ну тем, что мы его не проходили еще и я не совсем понимаю как это работает (1курс).
PM MAIL   Вверх
sQu1rr
Дата 25.11.2010, 18:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(Kit0boy @  25.11.2010,  17:47 Найти цитируемый пост)
ну тем, что мы его не проходили еще и я не совсем понимаю как это работает (1курс). 

Так это С или С++? Просто указывать в начале темы нужно  smile
ЗЫ Если С++, то ваш препод... ладно сами разберетесь
PM MAIL Skype GTalk   Вверх
Kit0boy
Дата 25.11.2010, 18:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



visual c++ он просто по месяцу в командировках катается в итоге вот
PM MAIL   Вверх
sQu1rr
Дата 25.11.2010, 18:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(Kit0boy @  25.11.2010,  18:29 Найти цитируемый пост)
он просто по месяцу в командировках катается в итоге вот 

Просто смысл проходить сишные функции в С++  smile 
Понимаю они бы давали основу. Но они ничего не дают - вы же не разбераете их работу. И для чего вообще? Если STL под рукой не окажется... не могу представить такое... С++ по стандарту с STL и никак подругому :(
PM MAIL Skype GTalk   Вверх
bsa
Дата 25.11.2010, 19:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

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



с помощью fgets читаешь строку в буфер. затем из этой строки с помощью sscanf выделяешь нужные поля.
PM   Вверх
Kit0boy
Дата 25.11.2010, 20:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



А как лучше поля задавать для sscanf? По пробелам? Или можно сразу как-то?
PM MAIL   Вверх
Kit0boy
Дата 25.11.2010, 21:12 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Код

#include "stdafx.h"
#include <iostream>
#include <stdio.h>
#include <string.h>
#include <locale.h>
const int lenmax=100;

int _tmain(int argc, char* argv[])
{
    setlocale(LC_ALL, "Rus");
    char str[lenmax];
    int k;
    FILE *f;
    f = fopen("nomer.txt","r");
    if ( (f = fopen("nomer.txt", "r")) == NULL )
        {  
                fprintf(stderr, "Can't open file\n");
                exit(1);
        }
    k=1;
    while(!feof(f))
    {
        char sentence; 
        fgets(str, 100, f);  
        sscanf ("Фамилия - %s Имя - %s Отчество - %s ",str,&k);
        printf ("%s %s %s\n",str);
        k++;
    }
    return 0;
}

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

Это сообщение отредактировал(а) Kit0boy - 25.11.2010, 21:50
PM MAIL   Вверх
Kit0boy
Дата 25.11.2010, 22:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Сам доделал, спасибо за участие)
PM MAIL   Вверх
bsa
Дата 25.11.2010, 23:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

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




M
bsa
Kit0boy, если ответ на вопрос получен, то пометь тему решенной

PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


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

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


 




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


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

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