Форум программистов, компьютерный форум, киберфорум
C++
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/40: Рейтинг темы: голосов - 40, средняя оценка - 4.73
6 / 6 / 4
Регистрация: 18.10.2011
Сообщений: 187

Delim в функции getline()

15.11.2014, 21:23. Показов 7687. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте. Встала проблема, что при чтении файла нужно использовать разные разделяемые символы (.,!? и т.д.). Пробовал использовать функцию getline, как while(getline(stream,s,'.') || getline(stream,s,',' ....), но это работает только относительно того, что первое в while, то есть только относительно точки. Подскажите идею как можно сделать, может другой метод какой есть. Заранее спасибо.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
15.11.2014, 21:23
Ответы с готовыми решениями:

Реализация своей функции getline
Здравствуйте! Не могу решить задачку. Постановка: Реализуйте функцию getline, которая считывает поток ввода посимвольно, пока не...

Третий аргумент функции sdt :: getline
Можно ли использовать в качестве третьего аргумента слово в функции std :: getline ? Если можно, то как ? Нужно нечто похожее на это : ...

Отсутствуют экземпляры перегруженной функции getline
не могу решить проблему #define _CRT_SECURE_NO_WARNINGS #include "stdafx.h" #include "conio.h" #include "stdio.h" #include...

4
Эксперт С++
 Аватар для hoggy
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
15.11.2014, 22:05
Честно говоря, я и сам когда то озадачился подобным вопросом.
Но объектно ориентированного стандартного решения так и не нашел.

В качестве обходного пути можно использовать сишный strtok
http://www.cplusplus.com/reference/cstring/strtok/
0
6 / 6 / 4
Регистрация: 18.10.2011
Сообщений: 187
15.11.2014, 23:31  [ТС]
hoggy, спасибо большое
0
2838 / 1647 / 254
Регистрация: 03.12.2007
Сообщений: 4,222
15.11.2014, 23:44
Можно, например, классифицировать все нужные символы как пробельные, тогда они будут пропускаться без проблем:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include <algorithm>
#include <fstream>
#include <iostream>
#include <locale>
#include <string>
 
class CustomSeparators : public std::ctype<char>
{
public:
    explicit CustomSeparators(size_t refs = 0) : ctype(newTable, false, refs)
    {
        const mask* oldTable = classic_table();
        std::copy(oldTable, oldTable + table_size, newTable);
        for (unsigned char c : ".,!?")
            newTable[c] |= space;
    }
private:
    mask newTable[table_size];
};
 
int main()
{
    std::ifstream fin("input.txt");
    fin.imbue(std::locale(fin.getloc(), new CustomSeparators));
    std::string s;
    while (fin >> s)
        std::cout << s << std::endl;
}
2
Эксперт С++
 Аватар для hoggy
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
15.11.2014, 23:48
Кстати, очевидно, что мы не единственные, кто был озадачен этим вопросом.
Загуглил:
http://www.codeproject.com/Art... e-plusstrt

Вещь не проверял.
Но может быть вам она понравится...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
15.11.2014, 23:48
Помогаю со студенческими работами здесь

Некорректный ввод строк с использованием функции getline
Здравствуйте столкнулся с магической проблемой функция getline(); криво работает когда вызывается с другой функции. #include...

Почему портится поток cin при использовании функции getline
char a; cin.getline(a,5); cin.clear(); При вводе свыше 5 символов после функции getline надо вызывать функцию clear() иначе...

Отличие getline() от cin.getline()
Чем отличается getline() от cin.getline() ?

Работа с динамической памятью. Ошибка в функции getline через посимвольный ввод
Было дано вот такое задание: В этой задаче вам необходимо написать функцию getline, которая читает строку из стандартного потока ввода...

Как узнать, был ли найден в строке, читаемой с помощью функции std::getline(), символ \n ?
Как узнать результат работы в std::getline(SS, Res, '\n'); был найден в потоке первод строки или нет?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru