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

Написать программу, которая копирует содержимое входного файла в выходной файл - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ IntelliSense: отсутствует оператор "<<", соответствующий этим операндам типы операндов: std::basic_ostream<char, std::char_traits<char> http://www.cyberforum.ru/cpp-beginners/thread1115087.html
#include <iostream> #include <conio.h> using namespace std; struct Stydent { std::string faculty; int rate; std::string group;
C++ Переполнение стека из-за передачи струтуры у меня происходит переполнение стека из-за передачи большой структуры. и не только из-за структуры пытался передать большую строку тоже переполнеие стека но сейчас про стуктуру так как строка всего лишь массив. (указатели использовать нельзя - не смеется, там свой скриптовый язык, там нет указателей) пишу ДЛЛ. 1. могу ли выделить память какойнибудь функцией для экзешника чтобы она увеличила... http://www.cyberforum.ru/cpp-beginners/thread1115086.html
C++ Визуализация сортировки массива
Здравствуйте, задача состоит в том, чтобы визуализировать процесс сортировки массива 3-мя различными алгоритмами. Как здесь http://www.sorting-algorithms.com/ . Я выбрал пузырьковый алгоритм, пирамиду и quick. Все реализовал, но как и ожидалось человеческое око не воспринимает такую скорость сортировки ))) Получается надо сделать таймер, и раз в 100 мс делать один проход цикла или одно...
C++ Объясните код
Если честно я не знаю как написать программу, пожалуйста помогите. Опишите код полностью и пожалуйста постройте программу функции.
C++ Не могу считать матрицу из файла в динамический массив http://www.cyberforum.ru/cpp-beginners/thread1115074.html
Вот проблемный кусок программы: fstream f (strConst); if (! f) { cout<<"Error_3"; return 1; } int numberOfString=0; while (!f.eof()) if (f.get()=='\n') numberOfString++; //считаем количество строк numberOfString+=1;
C++ Указатель на метод класса Доброго времени суток, форумчане. Необходимо получить указатель на размер вектора. Делаю из соображений быстродействия, т.к. каждый раз обращаться через оператор точки будет долго. Возможно я не прав. Просто думается, что обращаться напрямую через указатель быстрее нежели через класс. Искал много и даже находил решения моей проблемы, но вообще не понимаю как делать и как должно работать. Прошу... подробнее

Показать сообщение отдельно
Vourhey
Почетный модератор
6468 / 2243 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
10.03.2014, 04:43     Написать программу, которая копирует содержимое входного файла в выходной файл
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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
#include <iostream>
#include <fstream>
#include <algorithm>
#include <iterator>
#include <memory>
#include <cctype>
 
struct str_wrapper
{
    std::string str;
    bool is_number;
    bool is_latin;
 
    void append(char c)
    {
        str += c;
        if(!isdigit(c))
            is_number = false;
        if((c<'A' || c>'Z') && (c<'a' || c>'z'))
            is_latin = false;
    }
 
    void clear()
    {
        str.clear();
        is_number = true;
        is_latin = true;
    }
 
    bool empty()
    {
        return str.empty();
    }
};
 
class input_processor
{
private:
    std::shared_ptr<std::ofstream> output;
    str_wrapper word;
    short word_number;
    size_t numbers_count;
 
    void complete_word_input()
    {
        bool skip = false;
        if(word.empty())
            skip=true;
        else
        {
            if(word.is_number)
                ++numbers_count;
            else
            {
                if(word.is_latin)
                {
                    if(word_number > 0)
                    {
                        skip = true;
                        word_number = 0;
                    }
                    else
                        ++word_number;
                }
            }
        }
 
        if(!skip)
            *output<<word.str;
        word.clear();
    }
 
    void word_input(char c)
    {
        word.append(c);
    }
 
public:
    input_processor(const char *filename)
    {
        output = std::make_shared<std::ofstream>(filename);
        word_number = 0;
        numbers_count = 0;
        word.clear();
    }
 
    virtual ~input_processor()
    {
        if(output->is_open())
            output->close();
    }
 
    void operator()(char c)
    {
        if(word.empty())
        {
            if(isalpha(c) || isdigit(c))
                word_input(c);
            else
                *output<<c;
        }
        else
        {
            if(isspace(c) || c=='.' || c=='!' || c=='?')
            {
                complete_word_input();
                *output<<c;
            }
            else
                word_input(c);
        }
    }
 
    size_t get_numbers_cout()
    {
        return numbers_count;
    }
};
 
int main()
{
    std::ifstream input("input.txt");
    auto pred = for_each(std::istreambuf_iterator<char>(input), std::istreambuf_iterator<char>(), input_processor("out.txt"));
    std::cout<<"Numbers count "<<pred.get_numbers_cout()<<std::endl;
    input.close();
}
 
Текущее время: 15:26. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru