С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
Murlik
4 / 4 / 1
Регистрация: 30.04.2013
Сообщений: 48
#1

Дан символ 'C' (прописная латинская буква) и текстовый файл. Создать строковый файл, содержащий все слова из исходного файла, начинающиеся этой буквой - C++

30.04.2013, 13:39. Просмотров 652. Ответов 7
Метки нет (Все метки)

Дан символ 'C' (прописная латинская буква) и текстовый файл. Создать строковый файл, содержащий все слова из исходного файла, начинающиеся этой буквой (как прописной, так и строчной). Знаки препинания, расположенные в начале и в конце слов, не учитывать. Если исходный файл не содержит подходящих слов, оставить результирующий файл пустым.
Удалось пока сделать перзапись из файла в файл, нужно СРОЧНО!!!


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
#include <iostream>//i/o
#include <fstream> //file/read
#include <conio.h> //getch
using namespace std;
 
int main()
{
    ifstream ifs;//Файловый поток для чтения
    ofstream ofs;//Файловый поток для записи
    std::cout<<"Enter FilePath to read : ";
    //Путь может быть как абсолютным так и относительным
    
    char sRead[256];std::cin.getline(sRead,256);
    std::cout<<"Enter FilePath to write : ";
    //Путь может быть как абсолютным так и относительным
    char sWrite[256];std::cin.getline(sWrite,256);
 
    char sLine[2048];//Буфер чтения, наиболее оптимальная его величина!
    //открываем файл для чтения
    ifs.open(sRead , ios::in);//ios::in|ios::binary - флаги доступа можно и без них
    if(!ifs)
        std::cout<<"Error open file to read";
    else
        //открываем файл для записи, в случае если файл чтения удалось открыть
    ofs.open(sWrite,ios::out);
    if(!ofs)
        std::cout<<"Error open file to write";
    else
    {
        while(!ifs.eof())//Читаем поток пока не достигнем конца
        {
            ifs.getline(sLine,2048);
            cout<<sLine;//Заодно светим строку в консоли
            
            
            ofs<<sLine;//пишем строку в ofs
            cout<<sLine;//Заодно светим строку в консоли
        }
        //Закрываем потоки, рекомендую это делать
        ifs.close();
        ofs.close();
    }
    std::cout<<"\r\nPress any key to continue\r\n";
    getch();
    return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.04.2013, 13:39
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Дан символ 'C' (прописная латинская буква) и текстовый файл. Создать строковый файл, содержащий все слова из исходного файла, начинающиеся этой буквой (C++):

Дан символ 'C' (прописная латинская буква) и текстовый файл. Создать строковый файл, содержащий все слова из исходного файла - C++
Дан символ 'C' (прописная латинская буква) и текстовый файл. Создать строковый файл, содержащий все слова из исходного файла, начинающиеся...

Дан строковый файл. Создать новый строковый файл, содержащий все строки исходного файла наименьшей длины (в том же порядке). - C++
Даны имена двух файлов вещественных чисел. Известно, что первый из них существует и является непустым, а второй в текущем каталоге...

Дано число k (< 10) и текстовый файл, содержащий более k строк. Создать новый текстовый файл, содержащий k последних строк исходного файла - C++
Дано число k (&lt; 10) и текстовый файл, содержащий более k строк. Создать новый текстовый файл, содержащий k последних строк исходного...

Дан текстовый файл. Создать символьный файл, содержащий все знаки препинания, встретившиеся в текстовом файле - C++
Дан текстовый файл. Создать символьный файл, содержащий все знаки препинания, встретившиеся в текстовом файле (в том же порядке).

Дан текстовый файл. Вывести все слова, начинающиеся с заданной буквы - C++
Дан текстовый файл. Вывести все слова, начинающиеся с заданной буквы (к примеру &quot;а&quot;). Составить программу на C++. Заранее...

Дан файл целых чисел. Создать новый файл целых чисел, содержащий длины всех серий исходного файла. - C++
Задачу нужно решить в Borland C++ 3.11 Дан файл целых чисел. Создать новый файл целых чисел, содержащий длины всех серий исходного файла...

7
DiffEreD
1431 / 768 / 95
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
30.04.2013, 15:28 #2
Такой вариант подойдет?:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
#include <string>
#include <fstream>
#include <algorithm>
#include <iterator>
 
int main () 
{
    std::ifstream ifs("D:/file.txt");
    const char ch = 'C';
    if (ifs.is_open())
    {
        std::ofstream ofs("D:/result.txt");
        std::copy_if(std::istream_iterator<std::string>(ifs), std::istream_iterator<std::string>(),
                std::ostream_iterator<std::string>(ofs,"\n"), [=](const std::string& s){return std::toupper(s.front())==ch;});
    }
    else
        std::cout<<"Error opening file.\n";
    
    return 0;
1
Murlik
4 / 4 / 1
Регистрация: 30.04.2013
Сообщений: 48
30.04.2013, 16:00  [ТС] #3
14 copy_if' is not a member of `std'
0
DiffEreD
1431 / 768 / 95
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
30.04.2013, 16:07 #4
Быть такого не может, это стандартный алгоритм. Вы весь код подставили, как есть, а то там последняя скобка пропущена случайно?
1
Murlik
4 / 4 / 1
Регистрация: 30.04.2013
Сообщений: 48
30.04.2013, 16:21  [ТС] #5
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
#include <string>
#include <fstream>
#include <algorithm>
#include <iterator>
 
int main () 
{
    std::ifstream ifs("F1.txt");
    const char ch = 'C';// Присвоил константу
    if (ifs.is_open())
    {
        std::ofstream ofs("F2.txt");
        std::copy_if(std::istream_iterator<std::string>(ifs), std::istream_iterator<std::string>()),
                std::ostream_iterator<std::string>(ofs,"\n"), [=](const std::string& s){return std::toupper(s.front())==ch;});
    }
    else
        std::cout<<"Error opening file.\n";
    
    return 0;
Вот так, может я что не так делаю???
ошибки
Код
14 `copy_if' is not a member of `std'
15  expected primary-expression before '[' token  
15  expected primary-expression before '=' token 
15  expected primary-expression before ']' token 
15  expected primary-expression before "const" 
15  expected `;' before '{' token 
15  expected primary-expression before ')' token 
15  expected `;' before ')' token 
20  expected `}' at end of input
0
DiffEreD
1431 / 768 / 95
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
30.04.2013, 17:38 #6
Murlik, компилятор у вас какой, может лямбды не поддерживаются.

Добавлено через 3 минуты
Еще один вариант, который пишет слова в файл без знаков пунктуации:
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 <iostream>
#include <string>
#include <fstream>
#include <algorithm>
#include <iterator>
#include <boost/algorithm/string.hpp>
 
int main () 
{
    std::ifstream ifs("D:/file.txt");
    const char ch = 'C';
    if (ifs.is_open())
    {
        std::ofstream ofs("D:/result.txt");
        std::string curent;
        
        std::for_each(std::istream_iterator<std::string>(ifs), std::istream_iterator<std::string>(),
                [&ofs, &curent, ch](const std::string& s){
                    if (std::toupper(s.front()) != ch) return;
                    curent = s;
                    boost::trim_if(curent, boost::algorithm::is_punct());
                    ofs<<curent<<"\n";});
    }
    else
        std::cout<<"Error opening file.\n";
    
    return 0;
}
1
Murlik
4 / 4 / 1
Регистрация: 30.04.2013
Сообщений: 48
30.04.2013, 18:38  [ТС] #7
DEV-C++

Добавлено через 41 секунду
Code::Blocks 8.02

Добавлено через 51 минуту
Не удается открыть файл включение: boost/algorithm/string.hpp: No such file or directory

Добавлено через 26 секунд
для второго примера
0
Croessmah
Ушел
Эксперт CЭксперт С++
13558 / 7708 / 872
Регистрация: 27.09.2012
Сообщений: 18,996
Записей в блоге: 3
Завершенные тесты: 1
01.05.2013, 00:52 #8
boost имеется?
0
01.05.2013, 00:52
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.05.2013, 00:52
Привет! Вот еще темы с ответами:

Дан файл целых чисел. Создать новый файл целых чисел, содержащий длины всех серий исходного файла - C++
Дан файл целых чисел. Создать новый файл целых чисел, содержащий длины всех серий исходного файла (серией называется набор последова- ...

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

Дан входной текстовый файл, строка S (вводится с клавиатуры). Записать в выходной файл все строки входного файла, содержащие в качестве фрагмента стро - C++
Дан входной текстовый файл, строка S (вводится с клавиатуры). Записать в выходной файл все строки входного файла, содержащие в качестве...

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


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

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