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

Не работает код (программа считывает из файла строку, убирает лишние пробелы и записывает в другой файл строку, словами наоборот) - C++

Восстановить пароль Регистрация
 
Love-Love
 Аватар для Love-Love
6 / 6 / 0
Регистрация: 27.10.2012
Сообщений: 94
27.05.2013, 20:35     Не работает код (программа считывает из файла строку, убирает лишние пробелы и записывает в другой файл строку, словами наоборот) #1
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
#include "stdafx.h"
#include <iostream>
#include <fstream>
#include <string>
#include <algorithm>
using namespace std;
string RemoveBlanks(string c)
{
    string a;
    for(int i=0;i<c.length();i++)
            if(c[i]!=' ')a.push_back(c[i]);
    reverse(a.begin(),a.end());
    return a;
}
 
int main()
{
    string file_in, file_out;
    cout << "Input: ";
    cin >> file_in;
    cout << "Output: ";
    cin >> file_out;
    ifstream in(file_in.c_str(), ios::in);
    ofstream out(file_out.c_str(), ios::out);
    if (!in || !out)
    {
        cerr << "error: couldn't open file(s)" << endl;
        return 1;
    }
    string data;
    in>>data;
    in.close();
    RemoveBlanks(data);
    out<<data;
    out.close();
 
    return 0;
}
Программа считывает из файла строку, убирает лишние пробелы и записывает в другой файл строку, словами наоборот.

НО
Прога, которая тут, записывает в файл ЛИШЬ первое слово строки...
Помогите, прошу!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.05.2013, 20:35     Не работает код (программа считывает из файла строку, убирает лишние пробелы и записывает в другой файл строку, словами наоборот)
Посмотрите здесь:

C++ отладить программу на языке С++, которая считывает из файла a.txt строку и записывает её в файл b.txt в обратном порядке
Вывести на экран содержимое файла удалив лишние пробелы между словами C++
C++ Считывает символьную строку с экрана, выводит в файл (.txt) данную строку, перевернув её(было 123, стало 321)
Написать программу, которая считывает текст из файла и записывает в другой файл C++
C++ Написать программу , которая считывает текст из файла и записывает в другой файл только предложения , не содержащие заданное с клавиатуры слово можешь
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
27.05.2013, 20:50     Не работает код (программа считывает из файла строку, убирает лишние пробелы и записывает в другой файл строку, словами наоборот) #2
C++
1
2
3
string data;
getline(in, data);
in.close();
Love-Love
 Аватар для Love-Love
6 / 6 / 0
Регистрация: 27.10.2012
Сообщений: 94
27.05.2013, 21:20  [ТС]     Не работает код (программа считывает из файла строку, убирает лишние пробелы и записывает в другой файл строку, словами наоборот) #3
Супер, спасибо!

Добавлено через 21 минуту
Вот работает...Но у меня вопрос...Функция reverse...Она переворачивает слова. А мне нужно, чтобы не переворачивались, а просто задом-наперёд были записаны...Есть ТАКАЯ функция?
DiffEreD
 Аватар для DiffEreD
1420 / 757 / 95
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
27.05.2013, 21:28     Не работает код (программа считывает из файла строку, убирает лишние пробелы и записывает в другой файл строку, словами наоборот) #4
Предложу я вот такой вариант(переворачивает каждое слово в строке):
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
#include <iostream>
#include <vector>
#include <iterator>
#include <fstream>
#include <string>
#include <sstream>
#include <algorithm>
 
int main()
{   
    std::ifstream ifs("D:/file.txt");
    if (ifs.is_open()) {
        std::ofstream ofs("D:/result.txt", std::ios::out | std::ios::ate);
        std::vector<std::string> lines;
        std::string temp;
        std::istringstream iss;
        while (std::getline(ifs, temp, '\n'))
        {
            iss.str(temp);
            lines.assign(std::istream_iterator<std::string>(iss), std::istream_iterator<std::string>()); //закидываем слова с строки в массив
            std::for_each(lines.begin(), lines.end(), [&](const std::string& s)
            {
                std::copy(s.rbegin(), s.rend(), std::ostream_iterator<char>(ofs));
                ofs<<' ';
            });
            ofs<<'\n';
            iss.clear();
        }
    } else {
        std::cout << "Error opening file..." << std::endl;
    }
    
    std::cout<<'\n';
    return 0;
}
Love-Love
 Аватар для Love-Love
6 / 6 / 0
Регистрация: 27.10.2012
Сообщений: 94
27.05.2013, 21:32  [ТС]     Не работает код (программа считывает из файла строку, убирает лишние пробелы и записывает в другой файл строку, словами наоборот) #5
Вариант - класс!
И работает...
НО во больно непонятный...Увы...
Т.е. я так поняла, такой функции нет?
DiffEreD
 Аватар для DiffEreD
1420 / 757 / 95
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
27.05.2013, 21:37     Не работает код (программа считывает из файла строку, убирает лишние пробелы и записывает в другой файл строку, словами наоборот) #6
Вывод через стандартный алгоритм делается, через реверс итераторы:
C++
1
std::copy(s.rbegin(), s.rend(), std::ostream_iterator<char>(ofs));
Добавлено через 1 минуту
Вот еще вариант переворота каждой строки, если это надо было:
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
#include <iostream>
#include <vector>
#include <iterator>
#include <fstream>
#include <string>
#include <algorithm>
 
int main()
{
    std::ifstream ifs("D:/file.txt");
    if (ifs.is_open()) {
        std::ofstream ofs("D:/result.txt", std::ios::out | std::ios::ate);
        std::string temp;
        while (std::getline(ifs, temp, '\n'))
        {
            std::copy(temp.rbegin(), temp.rend(), std::ostream_iterator<char>(ofs));
            ofs<<'\n';
        }
    } else {
        std::cout << "Error opening file..." << std::endl;
    }
    
    std::cout<<'\n';
    return 0;
}
Love-Love
 Аватар для Love-Love
6 / 6 / 0
Регистрация: 27.10.2012
Сообщений: 94
27.05.2013, 21:44  [ТС]     Не работает код (программа считывает из файла строку, убирает лишние пробелы и записывает в другой файл строку, словами наоборот) #7
Спасибо большое.
Обнаружила ещё ошибку...
ПРОБЕЛЫ не уходят!... что делать?...Как быть?
DiffEreD
 Аватар для DiffEreD
1420 / 757 / 95
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
27.05.2013, 21:46     Не работает код (программа считывает из файла строку, убирает лишние пробелы и записывает в другой файл строку, словами наоборот) #8
И, судя по вашей соседней теме, возможно вот такое решение вам подойдет:
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
#include <iostream>
#include <vector>
#include <iterator>
#include <fstream>
#include <string>
#include <sstream>
#include <algorithm>
 
int main()
{   
    std::ifstream ifs("D:/file.txt");
    if (ifs.is_open()) {
        std::ofstream ofs("D:/result.txt", std::ios::out | std::ios::ate);
        std::vector<std::string> lines;
        std::string temp;
        std::istringstream iss;
        while (std::getline(ifs, temp, '\n'))
        {
            iss.str(temp);
            lines.assign(std::istream_iterator<std::string>(iss), std::istream_iterator<std::string>()); //закидываем слова с строки в массив
            std::reverse_copy(lines.begin(), lines.end(), std::ostream_iterator<std::string>(ofs, " "));
            ofs<<'\n';
            iss.clear();
        }
    } else {
        std::cout << "Error opening file..." << std::endl;
    }
    
    std::cout<<'\n';
    return 0;
}
Love-Love
 Аватар для Love-Love
6 / 6 / 0
Регистрация: 27.10.2012
Сообщений: 94
27.05.2013, 21:51  [ТС]     Не работает код (программа считывает из файла строку, убирает лишние пробелы и записывает в другой файл строку, словами наоборот) #9
ПРОБЕЛЫ не уходят!... что делать?...Как быть?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.05.2013, 21:56     Не работает код (программа считывает из файла строку, убирает лишние пробелы и записывает в другой файл строку, словами наоборот)
Еще ссылки по теме:

Написать программу которая считывает считывает текст из файла и записывает в другой слова состоящие не менее чем из 7 букв C++
C++ Одна программа записывает данные в файл, а другая их считывает и выводит на экран
C++ Напишите функцию, которая убирает все лишние пробелы и табуляции в строке

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

Или воспользуйтесь поиском по форуму:
DiffEreD
 Аватар для DiffEreD
1420 / 757 / 95
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
27.05.2013, 21:56     Не работает код (программа считывает из файла строку, убирает лишние пробелы и записывает в другой файл строку, словами наоборот) #10
Ну, последний код точно должен все пробелы затирать.
Yandex
Объявления
27.05.2013, 21:56     Не работает код (программа считывает из файла строку, убирает лишние пробелы и записывает в другой файл строку, словами наоборот)
Ответ Создать тему
Опции темы

Текущее время: 22:37. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru