Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.70
Lennadij
3 / 3 / 0
Регистрация: 08.10.2011
Сообщений: 45
#1

Класс fstream - C++

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

Дан файл, содержащий несколько строк. В новый файл переписать строки данного, вставляя символ ‘!’ после каждой строки, содержащей не более n символов. Если строка заканчивается знаком препинания заменить его на символ ‘!’.
1
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.10.2011, 18:53
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Класс fstream (C++):

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

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

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

fstream с++ - C++
Помогите пожалуйста... Как при считывании из файла считать переменные если они в файле находяться на разных строчках например надо...

<fstream> - C++
как читать из файла и записывать переменные написанные через пробел используя ifstream in(&quot;int.txt&quot;); ofstream...

fstream - C++
Всем доброго дня! Как с помощью библиотеки fstream вывести содержимое файла на экран??

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
sandye51
программист С++
684 / 586 / 39
Регистрация: 19.12.2010
Сообщений: 2,016
24.10.2011, 19:03 #2
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
Lennadij
3 / 3 / 0
Регистрация: 08.10.2011
Сообщений: 45
24.10.2011, 19:10  [ТС] #3
а можно как то пояснить?
0
sandye51
программист С++
684 / 586 / 39
Регистрация: 19.12.2010
Сообщений: 2,016
24.10.2011, 21:01 #4
Цитата Сообщение от Lennadij Посмотреть сообщение
а можно как то пояснить?
неблагодарным - нельзя
0
Lennadij
3 / 3 / 0
Регистрация: 08.10.2011
Сообщений: 45
24.10.2011, 21:10  [ТС] #5
ну и ладно, сама как нибудь разберусь: все равно прогу по своему буду писать
0
sandye51
24.10.2011, 21:11
  #6

Не по теме:

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

0
Lennadij
3 / 3 / 0
Регистрация: 08.10.2011
Сообщений: 45
24.10.2011, 21:14  [ТС] #7
ой-ой-ой
0
Revol'veR
23 / 23 / 2
Регистрация: 05.11.2010
Сообщений: 134
24.10.2011, 23:18 #8
Цитата Сообщение от Lennadij Посмотреть сообщение
а можно как то пояснить?
В помощь Великий гугл! Гугл знает всё
0
accept
4822 / 3243 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
25.10.2011, 05:49 #9
добавляет символ ! в начало строк заданной длины
2
Вложения
Тип файла: zip lines_bang.zip (693 байт, 17 просмотров)
Red Planet
49 / 10 / 2
Регистрация: 20.09.2009
Сообщений: 263
29.10.2011, 21:02 #10
Здравствуйте! Нужно считать данные из файла, в котором есть пустые строки. На выходе получаем заполненный вектор списков. Как пропустить пустые строки при использовании 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
accept
4822 / 3243 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
30.10.2011, 08:20 #11
Цитата Сообщение от Red Planet
Как пропустить пустые строки
C++
1
2
    if (s[0] == '\0')
        ;
0
Red Planet
49 / 10 / 2
Регистрация: 20.09.2009
Сообщений: 263
30.10.2011, 22:58 #12
С задачей, для которой нужно считать данные, не получается. Есть вектор списков, в него и нужно считать. Если встречаем пустую строку, то начинаем заполнять следующий список.

В файле сначала идет поле 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
accept
4822 / 3243 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
31.10.2011, 03:27 #13
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;
}
Код
[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
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.10.2011, 03:27
Привет! Вот еще темы с ответами:

fstream - C++
помогите, пожалуйста, чет я совсем запуталась((( /*Дан текстовый фал, содержащий целые числа, разделенные пробелами. Определить...

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

fstream непонятка - C++
скажите,плз,правильно ли я открываю файл с fstream, и где должен лежать сам файл? #include &lt;fstream&gt; #include &lt;iostream&gt; #include...

fstream::setbuf - C++
вот тут написано о этом методе: http://msdn.microsoft.com/en-us/library/aa243826(VS.60).aspx но при этом VC6.0 на такой код: ...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
31.10.2011, 03:27
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru