Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.93/15: Рейтинг темы: голосов - 15, средняя оценка - 4.93
3 / 3 / 1
Регистрация: 08.10.2011
Сообщений: 45

Класс fstream

24.10.2011, 18:53. Показов 2960. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Дан файл, содержащий несколько строк. В новый файл переписать строки данного, вставляя символ ‘!’ после каждой строки, содержащей не более n символов. Если строка заканчивается знаком препинания заменить его на символ ‘!’.
1
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
24.10.2011, 18:53
Ответы с готовыми решениями:

Класс fstream
Здравствуйте, Уважаемые форумчане ! Есть код: //Дан файл, содержащий несколько строк. Найти максимальную длину строки и вывести в...

Класс, производный от fstream, чтение и запись
Всем доброго времени суток. у меня есть класс, производный от fstream class Clist : public std::fstream { public: Clist();...

Есть класс A и класс B, класс B вложен в класс A и вложен в него, как классу B получить доступ к переменным класса A просто по имени?
На самом деле ничё фантастического я не прошу, ведь: template <class T> class matrix { friend class diagonal; ...

12
программист С++
 Аватар для sandye51
860 / 600 / 147
Регистрация: 19.12.2010
Сообщений: 2,014
24.10.2011, 19:03
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
#include <string>
#include <list>
#include <cstdlib>
#include <algorithm>
#include <iostream>
#include <fstream>
#include <iterator>
#include <utility>
#include <cctype>
#include <conio.h>
 
#define sumbol '!'
 
struct change :
    public std::unary_function<void, std::string>
{
    void operator() (std::string& s) const
    {
        if (ispunct(s.back()))
            s.back() = sumbol;
        else
            s.append(1, sumbol);
    }
};
 
int main()
{
    std::string file_name;
    std::list<std::string> text;
 
    std::cout << "Enter the file name" << std::endl;
    std::cin >> file_name;
 
    std::fstream file(file_name, std::ios_base::in | std::ios_base::_Nocreate);
    if (file.fail())
    {
        std::cout << "Bad file name" << std::endl;
        _getch();
        return EXIT_FAILURE;
    }
 
    std::string sentence;
    while (file)
    {
        std::getline(file, sentence);
        text.push_back(sentence);
    }
 
    std::for_each(text.begin(), text.end(), change());
 
    std::copy(text.begin(), text.end(),
        std::ostream_iterator<std::string>(std::cout, "\n"));
 
    _getch();
    return EXIT_SUCCESS;
}
1
3 / 3 / 1
Регистрация: 08.10.2011
Сообщений: 45
24.10.2011, 19:10  [ТС]
а можно как то пояснить?
0
программист С++
 Аватар для sandye51
860 / 600 / 147
Регистрация: 19.12.2010
Сообщений: 2,014
24.10.2011, 21:01
Цитата Сообщение от Lennadij Посмотреть сообщение
а можно как то пояснить?
неблагодарным - нельзя
0
3 / 3 / 1
Регистрация: 08.10.2011
Сообщений: 45
24.10.2011, 21:10  [ТС]
ну и ладно, сама как нибудь разберусь: все равно прогу по своему буду писать
0
24.10.2011, 21:11

Не по теме:

ахаха, наивная

0
3 / 3 / 1
Регистрация: 08.10.2011
Сообщений: 45
24.10.2011, 21:14  [ТС]
ой-ой-ой
0
 Аватар для Revol'veR
23 / 23 / 4
Регистрация: 05.11.2010
Сообщений: 134
24.10.2011, 23:18
Цитата Сообщение от Lennadij Посмотреть сообщение
а можно как то пояснить?
В помощь Великий гугл! Гугл знает всё
0
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
25.10.2011, 05:49
добавляет символ ! в начало строк заданной длины
Вложения
Тип файла: zip lines_bang.zip (693 байт, 18 просмотров)
2
 Аватар для Red Planet
49 / 10 / 3
Регистрация: 20.09.2009
Сообщений: 263
29.10.2011, 21:02
Здравствуйте! Нужно считать данные из файла, в котором есть пустые строки. На выходе получаем заполненный вектор списков. Как пропустить пустые строки при использовании ifstream, чтобы получилось три списка?

78
78.2471
80.261
86.1613

78
78.2471
79.9545
83.2786
84.8222
86.6739
89

78
80.261
80.9116
83.2786
84.3941
84.8222
86.1613
89
Добавлено через 9 минут
Решено.

accept, спасибо, ваш код меня навел на мысль. Пустую строку теперь могу отслеживать.

C++
1
2
3
4
5
6
7
8
ifstream openData;
string curr;
openData.open(openLog->FileName.c_str(), ios::in);
 
while (getline(openData, curr))
    if (curr.length() == 0)
        ShowMessage("Empty!");
openData.close();
0
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
30.10.2011, 08:20
Цитата Сообщение от Red Planet
Как пропустить пустые строки
C++
1
2
    if (s[0] == '\0')
        ;
0
 Аватар для Red Planet
49 / 10 / 3
Регистрация: 20.09.2009
Сообщений: 263
30.10.2011, 22:58
С задачей, для которой нужно считать данные, не получается. Есть вектор списков, в него и нужно считать. Если встречаем пустую строку, то начинаем заполнять следующий список.

В файле сначала идет поле a объекта класса X, через пробел следует поле b.

Файл.
56 34
78 22
3 9

3 7
89 55

1 5
7 77
Код.
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
29
30
31
32
33
34
35
36
37
38
39
#include <vcl>
#include <list>
#include <vector>
#include <iostream>
#include <fstream>
 
using namespace std;
 
class X {
    public: X(int aa = 1, int bb = 1) : a(aa), b(bb) {}
            int a, b;
};
 
int main() {
    vector< list<X> > xl(3, list<X>());
    ifstream ifs;
    string curr;
    ifs.open("file.txt", ios::in);
 
    for (int i = 0; i < xl.size(); ) {
        X temp;
        ifs >> temp.a >> temp.b;
        xl[i].push_back(temp);
        // сюда нужно вставить условие:
        // if (пустая строка) ++i;
    }
 
    ifs.close();
 
    for (int i = 0; i < xl.size(); ++i) {
        cout << i+1 << " element." << endl;
        for (list<X>::iterator it = xl[i].begin(); it != xl[i].end(); ++it)
            cout << it->a << " " << it->b << endl;
        cout << endl;
    }
 
    system("pause");
    return 0;
}
0
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
31.10.2011, 03:27
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
#include <string>
 
using namespace std;
 
int main()
{
    string s1 = "abc", s2;
    
    cout << s1.empty() << endl;
    cout << s2.empty() << endl;
    
    return 0;
}
Code
1
2
3
4
5
[guest@localhost tests]$ .iso++ t.cpp -o t
[guest@localhost tests]$ ./t
0
1
[guest@localhost tests]$
Добавлено через 3 минуты
Цитата Сообщение от Red Planet
C++
1
ifs.open("file.txt", ios::in);
это уже поток ввода, там не нужно in

при считывании используй string, getline() и stringstream
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
31.10.2011, 03:27
Помогаю со студенческими работами здесь

Fstream
Можете пояснить что такое объект fstream

Fstream
multiple definition of `ZapisInputFile'| Определив ofstream в header файле получаю ошибку, а закомментировав эту строку успешно...

Fstream
Где нужно создавать базу(Расположение txt файла), чтобы visual studio видела её?

fstream
Дан текстовый файл. Осуществить посимвольную чередующуюся печать файла в прямом и обратном направлении в новый файл. Например, если в файле...

fstream и for
Здрасте. Собственно, не могу понять, по какой причине не работает вот такой вот код, хотя по идее должен работать, или я ошибаюсь? ...


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка. Рецензия / Мнение/ Перевод Сайт называется reddit: The Thinkpad X220 Tablet is the best budget school laptop period. Это. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru